ArgumentPromotion: Propagate debug locations on calls for which arguments are promoted.
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 27 Jun 2014 05:32:09 +0000 (05:32 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 27 Jun 2014 05:32:09 +0000 (05:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211872 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/ArgumentPromotion.cpp
test/Transforms/ArgumentPromotion/dbg.ll [new file with mode: 0644]

index 377fa153a25498f1e6a0cfd92cb9c2082f580f15..4618c26bc65371a83dfa5c834eef6c885b0034a6 100644 (file)
@@ -741,6 +741,7 @@ CallGraphNode *ArgPromotion::DoPromotion(Function *F,
       if (cast<CallInst>(Call)->isTailCall())
         cast<CallInst>(New)->setTailCall();
     }
+    New->setDebugLoc(Call->getDebugLoc());
     Args.clear();
     AttributesVec.clear();
 
diff --git a/test/Transforms/ArgumentPromotion/dbg.ll b/test/Transforms/ArgumentPromotion/dbg.ll
new file mode 100644 (file)
index 0000000..a991bbc
--- /dev/null
@@ -0,0 +1,17 @@
+; RUN: opt < %s -argpromotion -S | FileCheck %s
+; CHECK: call void @test(), !dbg !1
+target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
+define internal void @test(i32* %X) {
+  ret void
+}
+
+define void @caller() {
+  call void @test(i32* null), !dbg !1
+  ret void
+}
+
+!llvm.module.flags = !{!3}
+
+!1 = metadata !{i32 8, i32 0, metadata !2, null}
+!2 = metadata !{}
+!3 = metadata !{i32 2, metadata !"Debug Info Version", i32 1}