From 444a08cd6f21c5ef7fbb64eccc7ac6beba33e891 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Wed, 30 Jun 2010 21:29:00 +0000 Subject: [PATCH] Remove all debug info related named mdnodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107323 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/StripSymbols.cpp | 16 ++++------- .../StripSymbols/2010-06-30-StripDebug.ll | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 test/Transforms/StripSymbols/2010-06-30-StripDebug.ll diff --git a/lib/Transforms/IPO/StripSymbols.cpp b/lib/Transforms/IPO/StripSymbols.cpp index 4f53f71fa3f..ae95ddffcbc 100644 --- a/lib/Transforms/IPO/StripSymbols.cpp +++ b/lib/Transforms/IPO/StripSymbols.cpp @@ -223,16 +223,12 @@ static bool StripDebugInfo(Module &M) { Changed = true; } - NamedMDNode *NMD = M.getNamedMetadata("llvm.dbg.gv"); - if (NMD) { - Changed = true; - NMD->eraseFromParent(); - } - - NMD = M.getNamedMetadata("llvm.dbg.lv"); - if (NMD) { - Changed = true; - NMD->eraseFromParent(); + for (Module::named_metadata_iterator NMI = M.named_metadata_begin(), + NME = M.named_metadata_end(); NMI != NME;) { + NamedMDNode *NMD = NMI; + ++NMI; + if (NMD->getName().startswith("llvm.dbg.")) + NMD->eraseFromParent(); } unsigned MDDbgKind = M.getMDKindID("dbg"); diff --git a/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll b/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll new file mode 100644 index 00000000000..f5899d26189 --- /dev/null +++ b/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll @@ -0,0 +1,28 @@ +; RUN: opt -strip-debug < %s | llvm-dis | grep -v llvm.dbg + +@x = common global i32 0 ; [#uses=0] + +define void @foo() nounwind readnone optsize ssp { +entry: + tail call void @llvm.dbg.value(metadata !9, i64 0, metadata !5), !dbg !10 + ret void, !dbg !11 +} + +declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone + +!llvm.dbg.sp = !{!0} +!llvm.dbg.lv.foo = !{!5} +!llvm.dbg.gv = !{!8} + +!0 = metadata !{i32 524334, i32 0, metadata !1, metadata !"foo", metadata !"foo", metadata !"foo", metadata !1, i32 2, metadata !3, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 true, void ()* @foo} ; [ DW_TAG_subprogram ] +!1 = metadata !{i32 524329, metadata !"b.c", metadata !"/tmp", metadata !2} ; [ DW_TAG_file_type ] +!2 = metadata !{i32 524305, i32 0, i32 1, metadata !"b.c", metadata !"/tmp", metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 true, i1 true, metadata !"", i32 0} ; [ DW_TAG_compile_unit ] +!3 = metadata !{i32 524309, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_subroutine_type ] +!4 = metadata !{null} +!5 = metadata !{i32 524544, metadata !6, metadata !"y", metadata !1, i32 3, metadata !7} ; [ DW_TAG_auto_variable ] +!6 = metadata !{i32 524299, metadata !0, i32 2, i32 0} ; [ DW_TAG_lexical_block ] +!7 = metadata !{i32 524324, metadata !1, metadata !"int", metadata !1, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] +!8 = metadata !{i32 524340, i32 0, metadata !1, metadata !"x", metadata !"x", metadata !"", metadata !1, i32 1, metadata !7, i1 false, i1 true, i32* @x} ; [ DW_TAG_variable ] +!9 = metadata !{i32 0} +!10 = metadata !{i32 3, i32 0, metadata !6, null} +!11 = metadata !{i32 4, i32 0, metadata !6, null}