OSDN Git Service

Add new DIE into the map asap.
authorDevang Patel <dpatel@apple.com>
Thu, 18 Aug 2011 22:21:50 +0000 (22:21 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 18 Aug 2011 22:21:50 +0000 (22:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137998 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp

index f337d18..93cbdae 100644 (file)
@@ -1030,26 +1030,26 @@ static const ConstantExpr *getMergedGlobalExpr(const Value *V) {
 
 /// createGlobalVariableDIE - create global variable DIE.
 void CompileUnit::createGlobalVariableDIE(const MDNode *N) {
-  DIGlobalVariable GV(N);
-
   // Check for pre-existence.
-  if (getDIE(GV))
+  if (getDIE(N))
     return;
 
-  DIType GTy = GV.getType();
+  DIGlobalVariable GV(N);
   DIE *VariableDIE = new DIE(GV.getTag());
-
-  bool isGlobalVariable = GV.getGlobal() != NULL;
+  // Add to map.
+  insertDIE(N, VariableDIE);
 
   // Add name.
   addString(VariableDIE, dwarf::DW_AT_name, dwarf::DW_FORM_string,
                    GV.getDisplayName());
   StringRef LinkageName = GV.getLinkageName();
+  bool isGlobalVariable = GV.getGlobal() != NULL;
   if (!LinkageName.empty() && isGlobalVariable)
     addString(VariableDIE, dwarf::DW_AT_MIPS_linkage_name, 
                      dwarf::DW_FORM_string,
                      getRealLinkageName(LinkageName));
   // Add type.
+  DIType GTy = GV.getType();
   addType(VariableDIE, GTy);
 
   // Add scoping info.
@@ -1060,8 +1060,6 @@ void CompileUnit::createGlobalVariableDIE(const MDNode *N) {
   }
   // Add line number info.
   addSourceLine(VariableDIE, GV);
-  // Add to map.
-  insertDIE(N, VariableDIE);
   // Add to context owner.
   DIDescriptor GVContext = GV.getContext();
   addToContextOwner(VariableDIE, GVContext);