Modular Codegen: Don't home always_inline functionsSince they'll likely (not always - if the address is taken, etc) beinlined away, even at -O0, separately provided weak definitions arelikely to
Modular Codegen: Don't home always_inline functionsSince they'll likely (not always - if the address is taken, etc) beinlined away, even at -O0, separately provided weak definitions arelikely to be unused so skip all of that.llvm-svn: 317279
show more ...
Modular Codegen: Include testing for inline asm as well as some commentary on the implementaiton choice.llvm-svn: 300106
Modular Codegen: Add/use a bit in serialized function definitions to track whether they are the subject of modular codegenSome decls are created not where they are written, but in other modulefile
Modular Codegen: Add/use a bit in serialized function definitions to track whether they are the subject of modular codegenSome decls are created not where they are written, but in other modulefiles/users (implicit special members and function template implicitspecializations). To correctly identify them, use a bit next to the definitionto track the modular codegen property.Discussed whether the module file bit could be omitted in favor ofreconstituting from the modular codegen decls list - best guess today is thatthe efficiency improvement of not having to deserialize the whole list wheneverany function is queried by a module user is worth it for the small sizeincrease of this redundant (list + bit-on-def) representation.Reviewers: rsmithDifferential Revision: https://reviews.llvm.org/D29901llvm-svn: 299982
Initialize builtins during modular codegenllvm-svn: 294512
Prototype of modules codegenFirst pass at generating weak definitions of inline functions from module files(& skipping (-O0) or emitting available_externally (optimizations)definitions where thos
Prototype of modules codegenFirst pass at generating weak definitions of inline functions from module files(& skipping (-O0) or emitting available_externally (optimizations)definitions where those modules are used).External functions defined in modules are emitted into the modularobject file as well (this may turn an existing ODR violation (if thatmodule were imported into multiple translations) into valid/linkablecode).Internal symbols (static functions, for example) are not correctlysupported yet. The symbol will be produced, internal, in the modularobject - unreferenceable from the users.Reviewers: rsmithDifferential Revision: https://reviews.llvm.org/D28845llvm-svn: 293456