lexopts.txt
来自「开放源码的编译器open watcom 1.6.0版的源代码」· 文本 代码 · 共 85 行
TXT
85 行
Optimizations Driven by Lexus
-----------------------------
(1) Templates
-------------
- commands, for a template instantiation, exist to:
(a) prohibit generation of template definitions
(b) force generation of template definitions
- both ANSI and Microsoft forms of commands
- implement them
- benefits:
(a) required instantiations are generated only once
(2) Generated Class Functions
-----------------------------
- generated in the module containing
(a) a non-inlined destructor
(b) if not (a), in all modules containing something out of line
- out of line function
- static data
(c) if not (a) or (b), in each module
- (a) or (b) generate all functions
- when doing this, we want to disable protection errors
- would we get protection errors in other cases
- we will likely need some global mode to:
- disable diagnostics when doing default generation
- enable diagnostics but not generate code when not doing
default generation
- (c) generates on demand
- what is "all functions" ?
- default constructor
- default destructor
- default copy constructor
- default assignment operator
- virtual-function tables
- virtual-base tables
- inline functions referenced by the class type signature
plus (we have to decide)
- addressiblity thunks
- type signature
- default-argument inlines
- inlined functions that are static'ed by overflowing inline_depth
- inlined functions in a class
- proposed changes to CLASS_INFO: add 3 flags
- checked_home_module: set when class has been examined (after eof)
to see if we are compiling a home module for this class
- home_module: valid only if "checked_home_module" is set
- indicates cases (a) or (b) when set
- default_gen: valid only if "checked_home_module" is set
- indicates that class declaration indicates no home module can
exist
- what are we not optimizing:
(a) classes with everything inline: optimization can be triggered by
adding a static char variable and creating a new source module
containing only the definition of that variable.
(b) we are marginally sub-optimal (for most users) when a class has
no non-inlined destructor, has multiple source files, and has
non-inlined components
- look at our classes to see if this is the case
- string, complex, iostream, containers, STL
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?