]> granicus.if.org Git - clang/commitdiff
Encode ivar access control info.
authorDevang Patel <dpatel@apple.com>
Thu, 19 Mar 2009 00:23:53 +0000 (00:23 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 19 Mar 2009 00:23:53 +0000 (00:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67267 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp

index cec39fd71a22524f56ef88c7aeae096312146bcb..ebf403038e07c36ac86f7d752ad0bebac51cc0da 100644 (file)
@@ -73,6 +73,8 @@ llvm::DICompileUnit CGDebugInfo::getOrCreateCompileUnit(SourceLocation Loc) {
   // Create new compile unit.
   // FIXME: Handle other language IDs as well.
   // FIXME: Do not know how to get clang version yet.
+  // FIXME: Encode command line options.
+  // FIXME: Encode optimization level.
   return Unit = DebugFactory.CreateCompileUnit(llvm::dwarf::DW_LANG_C89,
                                                FileName, DirName, "clang",
                                                isMain);
@@ -370,14 +372,20 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
     uint64_t FieldSize = M->getContext().getTypeSize(Ty);
     unsigned FieldAlign = M->getContext().getTypeAlign(Ty);
     uint64_t FieldOffset = RL.getFieldOffset(FieldNo);    
-    
+
+    unsigned Flags = 0;
+    if (Field->getAccessControl() == ObjCIvarDecl::Protected)
+      Flags = llvm::DIType::FlagProtected;
+    else if (Field->getAccessControl() == ObjCIvarDecl::Private)
+      Flags = llvm::DIType::FlagPrivate;
+      
     // Create a DW_TAG_member node to remember the offset of this field in the
     // struct.  FIXME: This is an absolutely insane way to capture this
     // information.  When we gut debug info, this should be fixed.
     FieldTy = DebugFactory.CreateDerivedType(llvm::dwarf::DW_TAG_member, Unit,
                                              FieldName, FieldDefUnit,
                                              FieldLine, FieldSize, FieldAlign,
-                                             FieldOffset, 0, FieldTy);
+                                             FieldOffset, Flags, FieldTy);
     EltTys.push_back(FieldTy);
   }