diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2012-11-06 22:44:45 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2012-11-06 22:44:45 +0000 |
commit | 4179ddd5752ec5a252ca1e1eb77a5c34b5835d3b (patch) | |
tree | fa0696c30f2a3e090dfbb9941e94dd58ad160c75 /lib/CodeGen/CodeGenModule.h | |
parent | e5b4666d9b86ea30b90b599691e75d380f84ddd6 (diff) |
Implement codegen for init_priority attribute properly - make sure it
works between the modules.
No functionality change on Darwin/Windows.
This fixes PR11480.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167496 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenModule.h')
-rw-r--r-- | lib/CodeGen/CodeGenModule.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h index d51a4670ba..1167c87ce1 100644 --- a/lib/CodeGen/CodeGenModule.h +++ b/lib/CodeGen/CodeGenModule.h @@ -296,11 +296,18 @@ class CodeGenModule : public CodeGenTypeCache { /// order. llvm::DenseMap<const Decl*, unsigned> DelayedCXXInitPosition; + typedef std::pair<OrderGlobalInits, llvm::Function*> GlobalInitData; + + struct GlobalInitPriorityCmp { + bool operator()(const GlobalInitData &LHS, + const GlobalInitData &RHS) const { + return LHS.first.priority < RHS.first.priority; + } + }; + /// - Global variables with initializers whose order of initialization /// is set by init_priority attribute. - - SmallVector<std::pair<OrderGlobalInits, llvm::Function*>, 8> - PrioritizedCXXGlobalInits; + SmallVector<GlobalInitData, 8> PrioritizedCXXGlobalInits; /// CXXGlobalDtors - Global destructor functions and arguments that need to /// run on termination. |