[llvm-commits] [dragonegg] r97392 - /dragonegg/trunk/llvm-debug.cpp

Duncan Sands baldrick at free.fr
Sun Feb 28 05:22:09 PST 2010


Author: baldrick
Date: Sun Feb 28 07:22:09 2010
New Revision: 97392

URL: http://llvm.org/viewvc/llvm-project?rev=97392&view=rev
Log:
Port commit 95469 (dpatel) from llvm-gcc:
Class static variables' debug info is emitted through EmitGlobalVariable(). There is not any need to emit this info again here.

Modified:
    dragonegg/trunk/llvm-debug.cpp

Modified: dragonegg/trunk/llvm-debug.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/llvm-debug.cpp?rev=97392&r1=97391&r2=97392&view=diff
==============================================================================
--- dragonegg/trunk/llvm-debug.cpp (original)
+++ dragonegg/trunk/llvm-debug.cpp Sun Feb 28 07:22:09 2010
@@ -840,48 +840,42 @@
     // Get the location of the member.
     expanded_location MemLoc = GetNodeLocation(Member, false);
 
-    if (TREE_CODE(Member) == FIELD_DECL) {
+    if (TREE_CODE(Member) != FIELD_DECL)
+      // otherwise is a static variable, whose debug info is emitted
+      // when through EmitGlobalVariable().
+      continue;
       
-      if (!OffsetIsLLVMCompatible(Member))
-        // FIXME: field with variable or humongous offset.
-        // Skip it for now.
-        continue;
+    if (!OffsetIsLLVMCompatible(Member))
+      // FIXME: field with variable or humongous offset.
+      // Skip it for now.
+      continue;
       
-      /* Ignore nameless fields.  */
-      if (DECL_NAME (Member) == NULL_TREE
-          && !(TREE_CODE (TREE_TYPE (Member)) == UNION_TYPE
-               || TREE_CODE (TREE_TYPE (Member)) == RECORD_TYPE))
-        continue;
-      
-      // Field type is the declared type of the field.
-      tree FieldNodeType = FieldType(Member);
-      DIType MemberType = getOrCreateType(FieldNodeType);
-      StringRef MemberName = GetNodeName(Member);
-      unsigned MFlags = 0;
-      if (TREE_PROTECTED(Member))
-        MFlags = llvm::DIType::FlagProtected;
-      else if (TREE_PRIVATE(Member))
-        MFlags = llvm::DIType::FlagPrivate;
-      
-      DIType DTy =
-        DebugFactory.CreateDerivedType(DW_TAG_member, 
-                                       findRegion(DECL_CONTEXT(Member)),
-                                       MemberName, 
-                                       getOrCreateCompileUnit(MemLoc.file),
-                                       MemLoc.line, NodeSizeInBits(Member),
-                                       NodeAlignInBits(FieldNodeType),
-                                       int_bit_position(Member), 
-                                       MFlags, MemberType);
-      EltTys.push_back(DTy);
-    } if (TREE_CODE(Member) == VAR_DECL) {
-      EltTys.push_back(DebugFactory.
-                       CreateVariable(DW_TAG_auto_variable,
-                                      findRegion(DECL_CONTEXT(Member)),
-                                      GetNodeName(Member), 
-                                      getOrCreateCompileUnit(MemLoc.file),
-                                      MemLoc.line, 
-                                      getOrCreateType(TREE_TYPE(Member))));
-    }
+    /* Ignore nameless fields.  */
+    if (DECL_NAME (Member) == NULL_TREE
+        && !(TREE_CODE (TREE_TYPE (Member)) == UNION_TYPE
+             || TREE_CODE (TREE_TYPE (Member)) == RECORD_TYPE))
+      continue;
+    
+    // Field type is the declared type of the field.
+    tree FieldNodeType = FieldType(Member);
+    DIType MemberType = getOrCreateType(FieldNodeType);
+    StringRef MemberName = GetNodeName(Member);
+    unsigned MFlags = 0;
+    if (TREE_PROTECTED(Member))
+      MFlags = llvm::DIType::FlagProtected;
+    else if (TREE_PRIVATE(Member))
+      MFlags = llvm::DIType::FlagPrivate;
+    
+    DIType DTy =
+      DebugFactory.CreateDerivedType(DW_TAG_member, 
+                                     findRegion(DECL_CONTEXT(Member)),
+                                     MemberName, 
+                                     getOrCreateCompileUnit(MemLoc.file),
+                                     MemLoc.line, NodeSizeInBits(Member),
+                                     NodeAlignInBits(FieldNodeType),
+                                     int_bit_position(Member), 
+                                     MFlags, MemberType);
+    EltTys.push_back(DTy);
   }
   
   for (tree Member = TYPE_METHODS(type); Member;





More information about the llvm-commits mailing list