[llvm-commits] [llvm-gcc-4.2] r62889 - in /llvm-gcc-4.2/trunk/gcc: llvm-backend.cpp llvm-debug.cpp

Devang Patel dpatel at apple.com
Fri Jan 23 14:37:20 PST 2009


Author: dpatel
Date: Fri Jan 23 16:37:20 2009
New Revision: 62889

URL: http://llvm.org/viewvc/llvm-project?rev=62889&view=rev
Log:
Set DW_AT_APPLE_optimized and DW_AT_APPLE_flags attribute while building DICompileUnit.

Right now, llvm-gcc does not emit debug info when optimization is ON. However, emit llvm.dbg.compile_unit and preserve it even when optimization is ON. This allows DW_AT_APPLE_flags to find its way in final binary.


Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
    llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=62889&r1=62888&r2=62889&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Fri Jan 23 16:37:20 2009
@@ -592,6 +592,13 @@
     writeLLVMValues();
   }
 
+  if (!flag_pch_file 
+      && optimize && debug_info_level > DINFO_LEVEL_NONE && !TheDebugInfo) {
+    DebugInfo DI(TheModule);
+    DICompileUnit CU = DI.createCompileUnit(main_input_filename);
+    AttributeUsedGlobals.insert(CU.getGV());
+  }
+
   // Add an llvm.global_ctors global if needed.
   if (!StaticCtors.empty())
     CreateStructorsList(StaticCtors, "llvm.global_ctors");

Modified: llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp?rev=62889&r1=62888&r2=62889&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-debug.cpp Fri Jan 23 16:37:20 2009
@@ -819,8 +819,15 @@
   else
     LangTag = DW_LANG_C89;
 
+  const char *Flags = "";
+  // Do this only when RC_DEBUG_OPTIONS environment variable is set to 
+  // a nonempty string. This is intended only for internal Apple use. 
+  char * debugopt = getenv("RC_DEBUG_OPTIONS");
+  if (debugopt && debugopt[0])
+    Flags = get_arguments();
+
   return DebugFactory.CreateCompileUnit(LangTag, FileName, Directory, 
-                                        version_string);
+                                        version_string, optimize, Flags);
 }
 
 /* LLVM LOCAL end (ENTIRE FILE!)  */





More information about the llvm-commits mailing list