[llvm-commits] [llvm] r131146 - in /llvm/trunk: lib/MC/MCDwarf.cpp test/DebugInfo/eh_symbol.ll

Rafael Espindola rafael.espindola at gmail.com
Tue May 10 12:51:53 PDT 2011


Author: rafael
Date: Tue May 10 14:51:53 2011
New Revision: 131146

URL: http://llvm.org/viewvc/llvm-project?rev=131146&view=rev
Log:
The EH symbols are only needed in eh_frame, not debug_frame.

Added:
    llvm/trunk/test/DebugInfo/eh_symbol.ll
Modified:
    llvm/trunk/lib/MC/MCDwarf.cpp

Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=131146&r1=131145&r2=131146&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Tue May 10 14:51:53 2011
@@ -633,7 +633,7 @@
   const TargetAsmInfo &asmInfo = context.getTargetAsmInfo();
 
   MCSymbol *sectionStart;
-  if (asmInfo.isFunctionEHFrameSymbolPrivate())
+  if (asmInfo.isFunctionEHFrameSymbolPrivate() || !IsEH)
     sectionStart = context.CreateTempSymbol();
   else
     sectionStart = context.GetOrCreateSymbol(Twine("EH_frame") + Twine(CIENum));
@@ -739,7 +739,7 @@
   MCSymbol *fdeEnd = context.CreateTempSymbol();
   const TargetAsmInfo &asmInfo = context.getTargetAsmInfo();
 
-  if (!asmInfo.isFunctionEHFrameSymbolPrivate()) {
+  if (!asmInfo.isFunctionEHFrameSymbolPrivate() && IsEH) {
     MCSymbol *EHSym = context.GetOrCreateSymbol(
       frame.Function->getName() + Twine(".eh"));
     streamer.EmitEHSymAttributes(frame.Function, EHSym);

Added: llvm/trunk/test/DebugInfo/eh_symbol.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/eh_symbol.ll?rev=131146&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/eh_symbol.ll (added)
+++ llvm/trunk/test/DebugInfo/eh_symbol.ll Tue May 10 14:51:53 2011
@@ -0,0 +1,18 @@
+; RUN: llc -mtriple=i386-apple-macosx -disable-cfi %s -o - | FileCheck %s
+
+; test that we don't produce foo.eh symbols is a debug_frame section.
+; CHECK-NOT: .globl	_f.eh
+
+define i32 @f() nounwind readnone optsize {
+entry:
+  ret i32 42
+}
+
+!llvm.dbg.sp = !{!0}
+
+!0 = metadata !{i32 589870, i32 0, metadata !1, metadata !"f", metadata !"f", metadata !"", metadata !1, i32 1, metadata !3, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 true, i32 ()* @f, null, null} ; [ DW_TAG_subprogram ]
+!1 = metadata !{i32 589865, metadata !"/home/espindola/llvm/test.c", metadata !"/home/espindola/tmpfs/build", metadata !2} ; [ DW_TAG_file_type ]
+!2 = metadata !{i32 589841, i32 0, i32 12, metadata !"/home/espindola/llvm/test.c", metadata !"/home/espindola/tmpfs/build", metadata !"clang version 3.0 ()", i1 true, i1 true, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
+!3 = metadata !{i32 589845, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !4, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
+!4 = metadata !{metadata !5}
+!5 = metadata !{i32 589860, metadata !2, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]





More information about the llvm-commits mailing list