diff options
author | Adrian Prantl <aprantl@apple.com> | 2017-05-09 19:47:37 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2017-05-09 19:47:37 +0000 |
commit | 8b2dee8975c4488a602f901f59fba9eb0797ff17 (patch) | |
tree | 590719c26799c024139472ceac49834f7afd7da3 /test/Verifier | |
parent | e6140e7c19c4955a5eec3b0956fa641d2e4c5e1d (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.ll | 16 |
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 = !{} |