In supporting init-priority, globals with the same init_priority must be
emitted in the order in which they are seen (still radar 8076356).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106485 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h
index 0bb9d4d..713a5fd 100644
--- a/lib/CodeGen/CodeGenModule.h
+++ b/lib/CodeGen/CodeGenModule.h
@@ -75,6 +75,13 @@
   class CGObjCRuntime;
   class MangleBuffer;
   
+  typedef struct OrderGlobalInits{
+    unsigned int priority;
+    unsigned int lex_order;
+    OrderGlobalInits(unsigned int p, unsigned int l) 
+    : priority(p), lex_order(l) {}
+  } OrderGlobalInitsType;
+  
 /// CodeGenModule - This class organizes the cross-function state that is used
 /// while generating LLVM code.
 class CodeGenModule : public BlockModule {
@@ -142,7 +149,8 @@
   
   /// - Global variables with initializers whose order of initialization
   /// is set by init_priority attribute.
-  llvm::SmallVector<std::pair<unsigned int, llvm::Function*>, 8> 
+  
+  llvm::SmallVector<std::pair<OrderGlobalInitsType, llvm::Function*>, 8> 
     PrioritizedCXXGlobalInits;
 
   /// CXXGlobalDtors - Global destructor functions and arguments that need to