[modules] Don't emit initializers for VarDecls within a module eagerly whenever
we first touch any part of that module. Instead, defer them until the first time that module is (transitively) imported. The initializer step for a module then recursively initializes modules that its own headers imported. For example, this avoids running the <iostream> global initializer in programs that don't actually use iostreams, but do use other parts of the standard library. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276159 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/AST/ASTContext.h 23 additions, 0 deletionsinclude/clang/AST/ASTContext.h
- include/clang/Sema/Sema.h 7 additions, 1 deletioninclude/clang/Sema/Sema.h
- include/clang/Serialization/ASTBitCodes.h 3 additions, 0 deletionsinclude/clang/Serialization/ASTBitCodes.h
- lib/AST/ASTContext.cpp 63 additions, 0 deletionslib/AST/ASTContext.cpp
- lib/CodeGen/CodeGenModule.cpp 11 additions, 5 deletionslib/CodeGen/CodeGenModule.cpp
- lib/Sema/SemaDecl.cpp 22 additions, 13 deletionslib/Sema/SemaDecl.cpp
- lib/Sema/SemaLookup.cpp 3 additions, 2 deletionslib/Sema/SemaLookup.cpp
- lib/Serialization/ASTReader.cpp 7 additions, 0 deletionslib/Serialization/ASTReader.cpp
- lib/Serialization/ASTReaderDecl.cpp 10 additions, 4 deletionslib/Serialization/ASTReaderDecl.cpp
- lib/Serialization/ASTWriter.cpp 22 additions, 1 deletionlib/Serialization/ASTWriter.cpp
- lib/Serialization/ASTWriterDecl.cpp 5 additions, 5 deletionslib/Serialization/ASTWriterDecl.cpp
- test/Modules/Inputs/unused-global-init/init.h 1 addition, 0 deletionstest/Modules/Inputs/unused-global-init/init.h
- test/Modules/Inputs/unused-global-init/module.modulemap 3 additions, 0 deletionstest/Modules/Inputs/unused-global-init/module.modulemap
- test/Modules/Inputs/unused-global-init/other.h 1 addition, 0 deletionstest/Modules/Inputs/unused-global-init/other.h
- test/Modules/Inputs/unused-global-init/unused.h 1 addition, 0 deletionstest/Modules/Inputs/unused-global-init/unused.h
- test/Modules/Inputs/unused-global-init/used.h 2 additions, 0 deletionstest/Modules/Inputs/unused-global-init/used.h
- test/Modules/odr.cpp 4 additions, 4 deletionstest/Modules/odr.cpp
- test/Modules/templates.mm 4 additions, 4 deletionstest/Modules/templates.mm
- test/Modules/unused-global-init.cpp 37 additions, 0 deletionstest/Modules/unused-global-init.cpp
Loading
Please register or sign in to comment