summaryrefslogtreecommitdiffstats
path: root/test/Verifier
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2017-05-09 19:47:37 +0000
committerAdrian Prantl <aprantl@apple.com>2017-05-09 19:47:37 +0000
commit8b2dee8975c4488a602f901f59fba9eb0797ff17 (patch)
tree590719c26799c024139472ceac49834f7afd7da3 /test/Verifier
parente6140e7c19c4955a5eec3b0956fa641d2e4c5e1d (diff)
Make it illegal for two Functions to point to the same DISubprogram
As recently discussed on llvm-dev [1], this patch makes it illegal for two Functions to point to the same DISubprogram and updates FunctionCloner to also clone the debug info of a function to conform to the new requirement. To simplify the implementation it also factors out the creation of inlineAt locations from the Inliner into a general-purpose utility in DILocation. [1] http://lists.llvm.org/pipermail/llvm-dev/2017-May/112661.html <rdar://problem/31926379> Differential Revision: https://reviews.llvm.org/D32975 This reapplies r302469 with a fix for a bot failure (reparentDebugInfo now checks for the case the orig and new function are identical). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302576 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Verifier')
-rw-r--r--test/Verifier/metadata-function-dbg.ll16
1 files changed, 11 insertions, 5 deletions
diff --git a/test/Verifier/metadata-function-dbg.ll b/test/Verifier/metadata-function-dbg.ll
index 24989ed7aa2e..6db40943ec38 100644
--- a/test/Verifier/metadata-function-dbg.ll
+++ b/test/Verifier/metadata-function-dbg.ll
@@ -3,12 +3,18 @@
; CHECK: function declaration may not have a !dbg attachment
declare !dbg !4 void @f1()
-define void @f2() !dbg !4 {
+; CHECK: function must have a single !dbg attachment
+define void @f2() !dbg !4 !dbg !4 {
unreachable
}
-; CHECK: function must have a single !dbg attachment
-define void @f3() !dbg !4 !dbg !4 {
+; CHECK: DISubprogram attached to more than one function
+define void @f3() !dbg !4 {
+ unreachable
+}
+
+; CHECK: DISubprogram attached to more than one function
+define void @f4() !dbg !4 {
unreachable
}
@@ -16,7 +22,7 @@ define void @f3() !dbg !4 !dbg !4 {
; CHECK: function !dbg attachment must be a subprogram
; CHECK-NEXT: void ()* @bar
; CHECK-NEXT: !{{[0-9]+}} = !{}
-define void @bar() !dbg !6 {
+define void @bar() !dbg !3 {
unreachable
}
@@ -26,5 +32,5 @@ define void @bar() !dbg !6 {
!llvm.dbg.cu = !{!1}
!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2)
!2 = !DIFile(filename: "t.c", directory: "/path/to/dir")
+!3 = !{}
!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !2, unit: !1)
-!6 = !{}