summaryrefslogtreecommitdiffstats
path: root/llvm/test/Verifier
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2017-10-02 18:31:29 +0000
committerAdrian Prantl <aprantl@apple.com>2017-10-02 18:31:29 +0000
commita8b2ddbde453fab0db90be21b9a1ff961a7770e0 (patch)
tree190712a839a2ce48d61e75501d2f68440891a2d8 /llvm/test/Verifier
parent6e17c00a88e23d0cc4cb491bfd0830f3df7fff66 (diff)
downloadbcm5719-llvm-a8b2ddbde453fab0db90be21b9a1ff961a7770e0.tar.gz
bcm5719-llvm-a8b2ddbde453fab0db90be21b9a1ff961a7770e0.zip
Move the stripping of invalid debug info from the Verifier to AutoUpgrade.
This came out of a recent discussion on llvm-dev (https://reviews.llvm.org/D38042). Currently the Verifier will strip the debug info metadata from a module if it finds the dbeug info to be malformed. This feature is very valuable since it allows us to improve the Verifier by making it stricter without breaking bcompatibility, but arguable the Verifier pass should not be modifying the IR. This patch moves the stripping of broken debug info into AutoUpgrade (UpgradeDebugInfo to be precise), which is a much better location for this since the stripping of malformed (i.e., produced by older, buggy versions of Clang) is a (harsh) form of AutoUpgrade. This change is mostly NFC in nature, the one big difference is the behavior when LLVM module passes are introducing malformed debug info. Prior to this patch, a NoAsserts build would have printed a warning and stripped the debug info, after this patch the Verifier will report a fatal error. I believe this behavior is actually more desirable anyway. Differential Revision: https://reviews.llvm.org/D38184 llvm-svn: 314699
Diffstat (limited to 'llvm/test/Verifier')
-rw-r--r--llvm/test/Verifier/DILocation-parents.ll4
-rw-r--r--llvm/test/Verifier/DISubprogram.ll3
-rw-r--r--llvm/test/Verifier/callsite-dbgloc.ll4
-rw-r--r--llvm/test/Verifier/dbg-difile-crash.ll6
-rw-r--r--llvm/test/Verifier/dbg-invalid-compileunit.ll4
-rw-r--r--llvm/test/Verifier/dbg-invalid-named-metadata.ll4
-rw-r--r--llvm/test/Verifier/dbg-invalid-retaintypes.ll4
-rw-r--r--llvm/test/Verifier/dbg-line-without-file.ll4
-rw-r--r--llvm/test/Verifier/dbg-null-retained-type.ll6
-rw-r--r--llvm/test/Verifier/dbg.ll3
-rw-r--r--llvm/test/Verifier/diglobalvariable.ll3
-rw-r--r--llvm/test/Verifier/fnarg-debuginfo.ll4
-rw-r--r--llvm/test/Verifier/fragment.ll3
-rw-r--r--llvm/test/Verifier/func-dbg.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.declare-address.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.declare-expression.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.declare-variable.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.value-expression.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.value-value.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.value-variable.ll3
-rw-r--r--llvm/test/Verifier/metadata-function-dbg.ll3
-rw-r--r--llvm/test/Verifier/pr34325.ll3
-rw-r--r--llvm/test/Verifier/tbaa.ll2
23 files changed, 50 insertions, 31 deletions
diff --git a/llvm/test/Verifier/DILocation-parents.ll b/llvm/test/Verifier/DILocation-parents.ll
index 810d0f64c58..3490a5fae3a 100644
--- a/llvm/test/Verifier/DILocation-parents.ll
+++ b/llvm/test/Verifier/DILocation-parents.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as %s -o - 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output %s -o - 2>&1 | FileCheck %s
source_filename = "t.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
@@ -17,6 +17,8 @@ entry:
ret void, !dbg !9
}
+; CHECK: warning: ignoring invalid debug info
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!2, !3}
diff --git a/llvm/test/Verifier/DISubprogram.ll b/llvm/test/Verifier/DISubprogram.ll
index e78220c8bd7..fd23effe9a8 100644
--- a/llvm/test/Verifier/DISubprogram.ll
+++ b/llvm/test/Verifier/DISubprogram.ll
@@ -1,4 +1,4 @@
-; RUN: not opt -S <%s 2>&1| FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
define void @f() !dbg !14 {
ret void
@@ -12,6 +12,7 @@ define void @f() !dbg !14 {
!8 = distinct !DICompileUnit(language: DW_LANG_Swift, producer: "clang",
file: !2, emissionKind: 2)
; CHECK: invalid thrown type
+; CHECK: warning: ignoring invalid debug info
!13 = !{!14}
!14 = distinct !DISubprogram(name: "f", scope: !1,
file: !2, line: 1, type: !3, isLocal: true,
diff --git a/llvm/test/Verifier/callsite-dbgloc.ll b/llvm/test/Verifier/callsite-dbgloc.ll
index 2e7473917ec..25fc6cbaab6 100644
--- a/llvm/test/Verifier/callsite-dbgloc.ll
+++ b/llvm/test/Verifier/callsite-dbgloc.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as %s -o %t 2>&1 | FileCheck %s
+; RUN: llvm-as %s -o %t 2>&1 | FileCheck %s
; Created and then edited from
; extern void i();
; void h() { i(); }
@@ -39,6 +39,8 @@ entry:
attributes #0 = { nounwind ssp uwtable }
+; CHECK: warning: ignoring invalid debug info
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5}
!llvm.ident = !{!6}
diff --git a/llvm/test/Verifier/dbg-difile-crash.ll b/llvm/test/Verifier/dbg-difile-crash.ll
index 626d1d1edd3..bb57f6128d3 100644
--- a/llvm/test/Verifier/dbg-difile-crash.ll
+++ b/llvm/test/Verifier/dbg-difile-crash.ll
@@ -1,6 +1,6 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
-; CHECK-NEXT: invalid file
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: invalid file
+; CHECK: warning: ignoring invalid debug info
define void @blah() !dbg !3 {
ret void
diff --git a/llvm/test/Verifier/dbg-invalid-compileunit.ll b/llvm/test/Verifier/dbg-invalid-compileunit.ll
index 8f8a3d975f7..97b4ee3ce24 100644
--- a/llvm/test/Verifier/dbg-invalid-compileunit.ll
+++ b/llvm/test/Verifier/dbg-invalid-compileunit.ll
@@ -1,5 +1,5 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!llvm.dbg.cu = !{!1}
diff --git a/llvm/test/Verifier/dbg-invalid-named-metadata.ll b/llvm/test/Verifier/dbg-invalid-named-metadata.ll
index d31e0da5807..a592e7db4bd 100644
--- a/llvm/test/Verifier/dbg-invalid-named-metadata.ll
+++ b/llvm/test/Verifier/dbg-invalid-named-metadata.ll
@@ -1,5 +1,5 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!llvm.dbg.the_dbg_namespace_is_reserved = !{}
diff --git a/llvm/test/Verifier/dbg-invalid-retaintypes.ll b/llvm/test/Verifier/dbg-invalid-retaintypes.ll
index 3bb69a79eb4..87484ba3faa 100644
--- a/llvm/test/Verifier/dbg-invalid-retaintypes.ll
+++ b/llvm/test/Verifier/dbg-invalid-retaintypes.ll
@@ -1,5 +1,5 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: warning: ignoring invalid debug info
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
diff --git a/llvm/test/Verifier/dbg-line-without-file.ll b/llvm/test/Verifier/dbg-line-without-file.ll
index 4d5725959ef..9cc052911f6 100644
--- a/llvm/test/Verifier/dbg-line-without-file.ll
+++ b/llvm/test/Verifier/dbg-line-without-file.ll
@@ -1,6 +1,6 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: line specified with no file
+; CHECK: warning: ignoring invalid debug info
define void @foo() !dbg !3 {
ret void
diff --git a/llvm/test/Verifier/dbg-null-retained-type.ll b/llvm/test/Verifier/dbg-null-retained-type.ll
index f0368c8c487..1e3565d5ae3 100644
--- a/llvm/test/Verifier/dbg-null-retained-type.ll
+++ b/llvm/test/Verifier/dbg-null-retained-type.ll
@@ -1,6 +1,6 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
-; CHECK-NEXT: invalid retained type
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: invalid retained type
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
diff --git a/llvm/test/Verifier/dbg.ll b/llvm/test/Verifier/dbg.ll
index d5728a4e827..32c46587070 100644
--- a/llvm/test/Verifier/dbg.ll
+++ b/llvm/test/Verifier/dbg.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
define void @foo() {
entry:
@@ -14,6 +14,7 @@ exit:
; CHECK-NEXT: ![[LOC]] = !{}
}
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DISubprogram()
diff --git a/llvm/test/Verifier/diglobalvariable.ll b/llvm/test/Verifier/diglobalvariable.ll
index 3b5b79d7f34..cc09c17540d 100644
--- a/llvm/test/Verifier/diglobalvariable.ll
+++ b/llvm/test/Verifier/diglobalvariable.ll
@@ -1,4 +1,4 @@
-; RUN: not opt -S <%s 2>&1| FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
; CHECK: !dbg attachment of global variable must be a DIGlobalVariableExpression
@g = common global i32 0, align 4, !dbg !0
@@ -12,3 +12,4 @@
!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!6 = !{i32 2, !"Dwarf Version", i32 4}
!7 = !{i32 2, !"Debug Info Version", i32 3}
+; CHECK: warning: ignoring invalid debug info
diff --git a/llvm/test/Verifier/fnarg-debuginfo.ll b/llvm/test/Verifier/fnarg-debuginfo.ll
index 7cbe9ce93b9..f1072e20722 100644
--- a/llvm/test/Verifier/fnarg-debuginfo.ll
+++ b/llvm/test/Verifier/fnarg-debuginfo.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output < %s -o /dev/null 2>&1 | FileCheck %s
declare void @llvm.dbg.declare(metadata, metadata, metadata)
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
@@ -12,6 +12,8 @@ entry:
ret void, !dbg !6
}
+; CHECK: warning: ignoring invalid debug info
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!7, !8}
diff --git a/llvm/test/Verifier/fragment.ll b/llvm/test/Verifier/fragment.ll
index ed5df89cb31..45921a4bd14 100644
--- a/llvm/test/Verifier/fragment.ll
+++ b/llvm/test/Verifier/fragment.ll
@@ -1,9 +1,10 @@
-; RUN: not opt -S <%s 2>&1| FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
; CHECK: fragment is larger than or outside of variable
; CHECK: !DIGlobalVariableExpression(var: ![[VAR:[0-9]+]],
; CHECK-SAME: expr: !DIExpression(DW_OP_LLVM_fragment, 0, 64))
; CHECK: ![[VAR]] = !DIGlobalVariable(name: "g"
+; CHECK: warning: ignoring invalid debug info
@g = common global i32 0, align 4, !dbg !0
diff --git a/llvm/test/Verifier/func-dbg.ll b/llvm/test/Verifier/func-dbg.ll
index b05d255d82e..e6518a4a41e 100644
--- a/llvm/test/Verifier/func-dbg.ll
+++ b/llvm/test/Verifier/func-dbg.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output < %s -o /dev/null 2>&1 | FileCheck %s
define i32 @foo() !dbg !4 {
entry:
@@ -11,6 +11,7 @@ entry:
ret i32 0, !dbg !6
}
+; CHECK: warning: ignoring invalid debug info
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!7, !8}
diff --git a/llvm/test/Verifier/llvm.dbg.declare-address.ll b/llvm/test/Verifier/llvm.dbg.declare-address.ll
index 90cf72aea68..219f9ca0a66 100644
--- a/llvm/test/Verifier/llvm.dbg.declare-address.ll
+++ b/llvm/test/Verifier/llvm.dbg.declare-address.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.declare intrinsic address/value
; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.declare-expression.ll b/llvm/test/Verifier/llvm.dbg.declare-expression.ll
index 54ee1f750d4..24b1f3ed2b9 100644
--- a/llvm/test/Verifier/llvm.dbg.declare-expression.ll
+++ b/llvm/test/Verifier/llvm.dbg.declare-expression.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.declare intrinsic expression
; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.declare-variable.ll b/llvm/test/Verifier/llvm.dbg.declare-variable.ll
index 6f415b7c1fa..a24ed6c9230 100644
--- a/llvm/test/Verifier/llvm.dbg.declare-variable.ll
+++ b/llvm/test/Verifier/llvm.dbg.declare-variable.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.declare intrinsic variable
; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.value-expression.ll b/llvm/test/Verifier/llvm.dbg.value-expression.ll
index dd3c29f9107..e1a68c7e82f 100644
--- a/llvm/test/Verifier/llvm.dbg.value-expression.ll
+++ b/llvm/test/Verifier/llvm.dbg.value-expression.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.value intrinsic expression
; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.value-value.ll b/llvm/test/Verifier/llvm.dbg.value-value.ll
index e1d02de484c..8b0ec1fed05 100644
--- a/llvm/test/Verifier/llvm.dbg.value-value.ll
+++ b/llvm/test/Verifier/llvm.dbg.value-value.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.value intrinsic address/value
; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.value-variable.ll b/llvm/test/Verifier/llvm.dbg.value-variable.ll
index 745f7ada587..4415956292c 100644
--- a/llvm/test/Verifier/llvm.dbg.value-variable.ll
+++ b/llvm/test/Verifier/llvm.dbg.value-variable.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.value intrinsic variable
; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/metadata-function-dbg.ll b/llvm/test/Verifier/metadata-function-dbg.ll
index 6db40943ec3..efef9a447f4 100644
--- a/llvm/test/Verifier/metadata-function-dbg.ll
+++ b/llvm/test/Verifier/metadata-function-dbg.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as %s -disable-output 2>&1 | FileCheck %s
+; RUN: llvm-as %s -disable-output 2>&1 | FileCheck %s
; CHECK: function declaration may not have a !dbg attachment
declare !dbg !4 void @f1()
@@ -26,6 +26,7 @@ define void @bar() !dbg !3 {
unreachable
}
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
diff --git a/llvm/test/Verifier/pr34325.ll b/llvm/test/Verifier/pr34325.ll
index ae258b7677f..fcc1f0b5300 100644
--- a/llvm/test/Verifier/pr34325.ll
+++ b/llvm/test/Verifier/pr34325.ll
@@ -1,6 +1,7 @@
-; RUN: not opt -verify %s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output %s 2>&1 | FileCheck %s
; CHECK: invalid type ref
+; CHECK: warning: ignoring invalid debug info
@bar = global i64 0, align 8, !dbg !0
diff --git a/llvm/test/Verifier/tbaa.ll b/llvm/test/Verifier/tbaa.ll
index 4939da92b13..72404b3088f 100644
--- a/llvm/test/Verifier/tbaa.ll
+++ b/llvm/test/Verifier/tbaa.ll
@@ -1,5 +1,5 @@
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
-; RUN: llvm-as -disable-verify < %s 2>&1 | opt -verify -S | FileCheck %s --check-prefix=STRIP
+; RUN: llvm-as -disable-verify < %s | opt -verify -S | FileCheck %s --check-prefix=STRIP
; STRIP-NOT: tbaa
; STRIP: @f_0
OpenPOWER on IntegriCloud