aboutsummaryrefslogtreecommitdiffstats
path: root/test/Verifier
diff options
context:
space:
mode:
Diffstat (limited to 'test/Verifier')
-rw-r--r--test/Verifier/2008-01-11-VarargAttrs.ll2
-rw-r--r--test/Verifier/dbg-typerefs.ll32
-rw-r--r--test/Verifier/frameescape.ll10
-rw-r--r--test/Verifier/inalloca-vararg.ll2
-rw-r--r--test/Verifier/invalid-statepoint.ll2
-rw-r--r--test/Verifier/invalid-statepoint2.ll2
-rw-r--r--test/Verifier/llvm.dbg.declare-address.ll3
-rw-r--r--test/Verifier/llvm.dbg.declare-expression.ll3
-rw-r--r--test/Verifier/llvm.dbg.declare-variable.ll3
-rw-r--r--test/Verifier/llvm.dbg.intrinsic-dbg-attachment.ll61
-rw-r--r--test/Verifier/llvm.dbg.value-expression.ll3
-rw-r--r--test/Verifier/llvm.dbg.value-value.ll3
-rw-r--r--test/Verifier/llvm.dbg.value-variable.ll3
-rw-r--r--test/Verifier/mdcompositetype-templateparams-tuple.ll11
-rw-r--r--test/Verifier/mdcompositetype-templateparams.ll12
-rw-r--r--test/Verifier/musttail-invalid.ll2
-rw-r--r--test/Verifier/musttail-valid.ll6
-rw-r--r--test/Verifier/statepoint.ll4
-rw-r--r--test/Verifier/varargs-intrinsic.ll2
19 files changed, 144 insertions, 22 deletions
diff --git a/test/Verifier/2008-01-11-VarargAttrs.ll b/test/Verifier/2008-01-11-VarargAttrs.ll
index b6ce625..af97ce6 100644
--- a/test/Verifier/2008-01-11-VarargAttrs.ll
+++ b/test/Verifier/2008-01-11-VarargAttrs.ll
@@ -5,6 +5,6 @@
declare void @foo(...)
define void @bar() {
- call void (...)* @foo(%struct* sret null )
+ call void (...) @foo(%struct* sret null )
ret void
}
diff --git a/test/Verifier/dbg-typerefs.ll b/test/Verifier/dbg-typerefs.ll
new file mode 100644
index 0000000..55ee03e
--- /dev/null
+++ b/test/Verifier/dbg-typerefs.ll
@@ -0,0 +1,32 @@
+; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; Check that the debug info verifier gives nice errors for bad type refs
+; (rather than crashing).
+!llvm.module.flags = !{!0}
+!0 = !{i32 2, !"Debug Info Version", i32 3}
+
+; Make a bunch of type references. Note that !4 references !"0.bad" (instead
+; of !"4.bad") to test error ordering.
+!typerefs = !{!1, !2, !3, !4}
+!1 = !MDDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !"1.good")
+!2 = !MDDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !"2.bad")
+!3 = !MDDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !"3.good")
+!4 = !MDDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !"0.bad")
+
+; Add a minimal compile unit to resolve some of the type references.
+!llvm.dbg.cu = !{!5}
+!5 = !MDCompileUnit(file: !6, language: DW_LANG_C99, retainedTypes: !7)
+!6 = !MDFile(filename: "file.c", directory: "/path/to/dir")
+!7 = !{!8, !9}
+!8 = !MDCompositeType(tag: DW_TAG_structure_type, identifier: "1.good")
+!9 = !MDCompositeType(tag: DW_TAG_structure_type, identifier: "3.good")
+
+; CHECK: assembly parsed, but does not verify
+; CHECK-NEXT: unresolved type ref
+; CHECK-NEXT: !"0.bad"
+; CHECK-NEXT: !MDDerivedType(tag: DW_TAG_pointer_type
+; CHECK-SAME: baseType: !"0.bad"
+; CHECK-NEXT: unresolved type ref
+; CHECK-NEXT: !"2.bad"
+; CHECK-NEXT: !MDDerivedType(tag: DW_TAG_pointer_type
+; CHECK-SAME: baseType: !"2.bad"
+; CHECK-NOT: unresolved
diff --git a/test/Verifier/frameescape.ll b/test/Verifier/frameescape.ll
index 54e0db4..1fb9387 100644
--- a/test/Verifier/frameescape.ll
+++ b/test/Verifier/frameescape.ll
@@ -5,8 +5,8 @@ declare i8* @llvm.framerecover(i8*, i8*, i32)
define internal void @f() {
%a = alloca i8
- call void (...)* @llvm.frameescape(i8* %a)
- call void (...)* @llvm.frameescape(i8* %a)
+ call void (...) @llvm.frameescape(i8* %a)
+ call void (...) @llvm.frameescape(i8* %a)
ret void
}
; CHECK: multiple calls to llvm.frameescape in one function
@@ -16,7 +16,7 @@ entry:
%a = alloca i8
br label %not_entry
not_entry:
- call void (...)* @llvm.frameescape(i8* %a)
+ call void (...) @llvm.frameescape(i8* %a)
ret void
}
; CHECK: llvm.frameescape used outside of entry block
@@ -51,14 +51,14 @@ define internal void @k(i32 %n) {
define internal void @l(i8* %b) {
%a = alloca i8
- call void (...)* @llvm.frameescape(i8* %a, i8* %b)
+ call void (...) @llvm.frameescape(i8* %a, i8* %b)
ret void
}
; CHECK: llvm.frameescape only accepts static allocas
define internal void @m() {
%a = alloca i8
- call void (...)* @llvm.frameescape(i8* %a)
+ call void (...) @llvm.frameescape(i8* %a)
ret void
}
diff --git a/test/Verifier/inalloca-vararg.ll b/test/Verifier/inalloca-vararg.ll
index 5099fd1..428f89e 100644
--- a/test/Verifier/inalloca-vararg.ll
+++ b/test/Verifier/inalloca-vararg.ll
@@ -3,7 +3,7 @@
declare void @h(i32, ...)
define void @i() {
%args = alloca inalloca i32
- call void (i32, ...)* @h(i32 1, i32* inalloca %args, i32 3)
+ call void (i32, ...) @h(i32 1, i32* inalloca %args, i32 3)
; CHECK: inalloca isn't on the last argument!
ret void
}
diff --git a/test/Verifier/invalid-statepoint.ll b/test/Verifier/invalid-statepoint.ll
index 7000973..d3a5bb8 100644
--- a/test/Verifier/invalid-statepoint.ll
+++ b/test/Verifier/invalid-statepoint.ll
@@ -12,7 +12,7 @@ declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32, i32, i32) #0
define i32 addrspace(1)* @0(i32 addrspace(1)* %dparam) {
%a00 = load i32, i32 addrspace(1)* %dparam
- %to0 = call i32 (i1 ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f0i1f(i1 ()* @return0i1, i32 9, i32 0, i2 0, i32 addrspace(1)* %dparam)
+ %to0 = call i32 (i1 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f0i1f(i1 ()* @return0i1, i32 9, i32 0, i2 0, i32 addrspace(1)* %dparam)
%relocate = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %to0, i32 0, i32 4)
ret i32 addrspace(1)* %relocate
}
diff --git a/test/Verifier/invalid-statepoint2.ll b/test/Verifier/invalid-statepoint2.ll
index 0d8b2a8..e3dd922 100644
--- a/test/Verifier/invalid-statepoint2.ll
+++ b/test/Verifier/invalid-statepoint2.ll
@@ -12,7 +12,7 @@ declare i32 @"personality_function"()
define i64 addrspace(1)* @test1(i8 addrspace(1)* %arg, i32 %val) gc "statepoint-example" {
entry:
%cast = bitcast i8 addrspace(1)* %arg to i64 addrspace(1)*
- %safepoint_token = call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* undef, i32 0, i32 0, i32 %val, i32 0, i32 0, i32 0, i32 10, i32 0, i8 addrspace(1)* %arg, i64 addrspace(1)* %cast, i8 addrspace(1)* %arg, i8 addrspace(1)* %arg)
+ %safepoint_token = call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* undef, i32 0, i32 0, i32 %val, i32 0, i32 0, i32 0, i32 10, i32 0, i8 addrspace(1)* %arg, i64 addrspace(1)* %cast, i8 addrspace(1)* %arg, i8 addrspace(1)* %arg)
%reloc = call i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %safepoint_token, i32 9, i32 10)
ret i64 addrspace(1)* %reloc
}
diff --git a/test/Verifier/llvm.dbg.declare-address.ll b/test/Verifier/llvm.dbg.declare-address.ll
index f4a9366..0c23d6e 100644
--- a/test/Verifier/llvm.dbg.declare-address.ll
+++ b/test/Verifier/llvm.dbg.declare-address.ll
@@ -6,7 +6,7 @@
define void @foo(i32 %a) {
entry:
%s = alloca i32
- call void @llvm.dbg.declare(metadata !"", metadata !MDLocalVariable(tag: DW_TAG_arg_variable), metadata !MDExpression())
+ call void @llvm.dbg.declare(metadata !"", metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1), metadata !MDExpression()), !dbg !MDLocation(scope: !1)
ret void
}
@@ -14,3 +14,4 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata)
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram()
diff --git a/test/Verifier/llvm.dbg.declare-expression.ll b/test/Verifier/llvm.dbg.declare-expression.ll
index 1121e43..0491fdc 100644
--- a/test/Verifier/llvm.dbg.declare-expression.ll
+++ b/test/Verifier/llvm.dbg.declare-expression.ll
@@ -6,7 +6,7 @@
define void @foo(i32 %a) {
entry:
%s = alloca i32
- call void @llvm.dbg.declare(metadata i32* %s, metadata !MDLocalVariable(tag: DW_TAG_arg_variable), metadata !"")
+ call void @llvm.dbg.declare(metadata i32* %s, metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1), metadata !"")
ret void
}
@@ -14,3 +14,4 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata)
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram()
diff --git a/test/Verifier/llvm.dbg.declare-variable.ll b/test/Verifier/llvm.dbg.declare-variable.ll
index e038243..763f463 100644
--- a/test/Verifier/llvm.dbg.declare-variable.ll
+++ b/test/Verifier/llvm.dbg.declare-variable.ll
@@ -6,7 +6,7 @@
define void @foo(i32 %a) {
entry:
%s = alloca i32
- call void @llvm.dbg.declare(metadata i32* %s, metadata !"", metadata !MDExpression())
+ call void @llvm.dbg.declare(metadata i32* %s, metadata !"", metadata !MDExpression()), !dbg !MDLocation(scope: !1)
ret void
}
@@ -14,3 +14,4 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata)
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram()
diff --git a/test/Verifier/llvm.dbg.intrinsic-dbg-attachment.ll b/test/Verifier/llvm.dbg.intrinsic-dbg-attachment.ll
new file mode 100644
index 0000000..3615960
--- /dev/null
+++ b/test/Verifier/llvm.dbg.intrinsic-dbg-attachment.ll
@@ -0,0 +1,61 @@
+; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+define void @foo() {
+entry:
+ call void @llvm.dbg.value(
+ metadata i8* undef,
+ i64 0,
+ metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1),
+ metadata !MDExpression())
+; CHECK-LABEL: llvm.dbg.value intrinsic requires a !dbg attachment
+; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
+; CHECK-NEXT: label %entry
+; CHECK-NEXT: void ()* @foo
+
+ call void @llvm.dbg.declare(
+ metadata i8* undef,
+ metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1),
+ metadata !MDExpression())
+; CHECK-LABEL: llvm.dbg.declare intrinsic requires a !dbg attachment
+; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
+; CHECK-NEXT: label %entry
+; CHECK-NEXT: void ()* @foo
+
+ call void @llvm.dbg.value(
+ metadata i8* undef,
+ i64 0,
+ metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1),
+ metadata !MDExpression()),
+ !dbg !MDLocation(scope: !2)
+; CHECK-LABEL: mismatched subprogram between llvm.dbg.value variable and !dbg attachment
+; CHECK-NEXT: call void @llvm.dbg.value({{[^,]+, [^,]+}}, metadata ![[VAR:[0-9]+]], {{[^,]+}}), !dbg ![[LOC:[0-9]+]]
+; CHECK-NEXT: label %entry
+; CHECK-NEXT: void ()* @foo
+; CHECK-NEXT: ![[VAR]] = !MDLocalVariable({{.*}}scope: ![[VARSP:[0-9]+]]
+; CHECK-NEXT: ![[VARSP]] = !MDSubprogram(
+; CHECK-NEXT: ![[LOC]] = !MDLocation({{.*}}scope: ![[LOCSP:[0-9]+]]
+; CHECK-NEXT: ![[LOCSP]] = !MDSubprogram(
+
+ call void @llvm.dbg.declare(
+ metadata i8* undef,
+ metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1),
+ metadata !MDExpression()),
+ !dbg !MDLocation(scope: !2)
+; CHECK-LABEL: mismatched subprogram between llvm.dbg.declare variable and !dbg attachment
+; CHECK-NEXT: call void @llvm.dbg.declare({{[^,]+}}, metadata ![[VAR:[0-9]+]], {{.*[^,]+}}), !dbg ![[LOC:[0-9]+]]
+; CHECK-NEXT: label %entry
+; CHECK-NEXT: void ()* @foo
+; CHECK-NEXT: ![[VAR]] = !MDLocalVariable({{.*}}scope: ![[VARSP:[0-9]+]]
+; CHECK-NEXT: ![[VARSP]] = !MDSubprogram(
+; CHECK-NEXT: ![[LOC]] = !MDLocation({{.*}}scope: ![[LOCSP:[0-9]+]]
+; CHECK-NEXT: ![[LOCSP]] = !MDSubprogram(
+
+ ret void
+}
+
+declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
+declare void @llvm.dbg.declare(metadata, metadata, metadata)
+
+!llvm.module.flags = !{!0}
+!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram(name: "foo")
+!2 = !MDSubprogram(name: "bar")
diff --git a/test/Verifier/llvm.dbg.value-expression.ll b/test/Verifier/llvm.dbg.value-expression.ll
index c0d14a5..18350a1 100644
--- a/test/Verifier/llvm.dbg.value-expression.ll
+++ b/test/Verifier/llvm.dbg.value-expression.ll
@@ -6,7 +6,7 @@
define void @foo(i32 %a) {
entry:
%s = alloca i32
- call void @llvm.dbg.value(metadata i32* %s, i64 0, metadata !MDLocalVariable(tag: DW_TAG_arg_variable), metadata !"")
+ call void @llvm.dbg.value(metadata i32* %s, i64 0, metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1), metadata !""), !dbg !MDLocation(scope: !1)
ret void
}
@@ -14,3 +14,4 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram()
diff --git a/test/Verifier/llvm.dbg.value-value.ll b/test/Verifier/llvm.dbg.value-value.ll
index b64febe..3d82be7 100644
--- a/test/Verifier/llvm.dbg.value-value.ll
+++ b/test/Verifier/llvm.dbg.value-value.ll
@@ -6,7 +6,7 @@
define void @foo(i32 %a) {
entry:
%s = alloca i32
- call void @llvm.dbg.value(metadata !"", i64 0, metadata !MDLocalVariable(tag: DW_TAG_arg_variable), metadata !MDExpression())
+ call void @llvm.dbg.value(metadata !"", i64 0, metadata !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !1), metadata !MDExpression()), !dbg !MDLocation(scope: !1)
ret void
}
@@ -14,3 +14,4 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram()
diff --git a/test/Verifier/llvm.dbg.value-variable.ll b/test/Verifier/llvm.dbg.value-variable.ll
index a87a15c..ba6a687 100644
--- a/test/Verifier/llvm.dbg.value-variable.ll
+++ b/test/Verifier/llvm.dbg.value-variable.ll
@@ -6,7 +6,7 @@
define void @foo(i32 %a) {
entry:
%s = alloca i32
- call void @llvm.dbg.value(metadata i32* %s, i64 0, metadata !"", metadata !MDExpression())
+ call void @llvm.dbg.value(metadata i32* %s, i64 0, metadata !"", metadata !MDExpression()), !dbg !MDLocation(scope: !1)
ret void
}
@@ -14,3 +14,4 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !MDSubprogram()
diff --git a/test/Verifier/mdcompositetype-templateparams-tuple.ll b/test/Verifier/mdcompositetype-templateparams-tuple.ll
new file mode 100644
index 0000000..a2e2c78
--- /dev/null
+++ b/test/Verifier/mdcompositetype-templateparams-tuple.ll
@@ -0,0 +1,11 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: invalid template params
+; CHECK-NEXT: !2 = !MDCompositeType(
+; CHECK-SAME: templateParams: !1
+; CHECK-NEXT: !1 = !MDTemplateTypeParameter(
+
+!named = !{!0, !1, !2}
+!0 = !MDBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
+!1 = !MDTemplateTypeParameter(name: "T", type: !0)
+!2 = !MDCompositeType(tag: DW_TAG_structure_type, name: "IntTy", size: 32, align: 32, templateParams: !1)
diff --git a/test/Verifier/mdcompositetype-templateparams.ll b/test/Verifier/mdcompositetype-templateparams.ll
new file mode 100644
index 0000000..72909e3
--- /dev/null
+++ b/test/Verifier/mdcompositetype-templateparams.ll
@@ -0,0 +1,12 @@
+; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s
+
+; CHECK: invalid template parameter
+; CHECK-NEXT: !2 = !MDCompositeType(
+; CHECK-SAME: templateParams: !1
+; CHECK-NEXT: !1 = !{!0}
+; CHECK-NEXT: !0 = !MDBasicType(
+
+!named = !{!0, !1, !2}
+!0 = !MDBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
+!1 = !{!0}
+!2 = !MDCompositeType(tag: DW_TAG_structure_type, name: "IntTy", size: 32, align: 32, templateParams: !1)
diff --git a/test/Verifier/musttail-invalid.ll b/test/Verifier/musttail-invalid.ll
index e5f9a40..78017db 100644
--- a/test/Verifier/musttail-invalid.ll
+++ b/test/Verifier/musttail-invalid.ll
@@ -26,7 +26,7 @@ define void @mismatched_intty(i32) {
declare void @mismatched_vararg_callee(i8*, ...)
define void @mismatched_vararg(i8*) {
; CHECK: mismatched varargs
- musttail call void (i8*, ...)* @mismatched_vararg_callee(i8* null)
+ musttail call void (i8*, ...) @mismatched_vararg_callee(i8* null)
ret void
}
diff --git a/test/Verifier/musttail-valid.ll b/test/Verifier/musttail-valid.ll
index bdc0c8c..150e949 100644
--- a/test/Verifier/musttail-valid.ll
+++ b/test/Verifier/musttail-valid.ll
@@ -17,13 +17,13 @@ define i32* @similar_ret_ptrty() {
declare x86_thiscallcc void @varargs_thiscall(i8*, ...)
define x86_thiscallcc void @varargs_thiscall_thunk(i8* %this, ...) {
- musttail call x86_thiscallcc void (i8*, ...)* @varargs_thiscall(i8* %this, ...)
+ musttail call x86_thiscallcc void (i8*, ...) @varargs_thiscall(i8* %this, ...)
ret void
}
declare x86_fastcallcc void @varargs_fastcall(i8*, ...)
define x86_fastcallcc void @varargs_fastcall_thunk(i8* %this, ...) {
- musttail call x86_fastcallcc void (i8*, ...)* @varargs_fastcall(i8* %this, ...)
+ musttail call x86_fastcallcc void (i8*, ...) @varargs_fastcall(i8* %this, ...)
ret void
}
@@ -32,7 +32,7 @@ define x86_thiscallcc void @varargs_thiscall_unreachable(i8* %this, ...) {
}
define x86_thiscallcc void @varargs_thiscall_ret_unreachable(i8* %this, ...) {
- musttail call x86_thiscallcc void (i8*, ...)* @varargs_thiscall(i8* %this, ...)
+ musttail call x86_thiscallcc void (i8*, ...) @varargs_thiscall(i8* %this, ...)
ret void
bb1:
ret void
diff --git a/test/Verifier/statepoint.ll b/test/Verifier/statepoint.ll
index 9342309..61d8b77 100644
--- a/test/Verifier/statepoint.ll
+++ b/test/Verifier/statepoint.ll
@@ -10,7 +10,7 @@ declare i32 @"personality_function"()
define i64 addrspace(1)* @test1(i8 addrspace(1)* %arg) gc "statepoint-example" {
entry:
%cast = bitcast i8 addrspace(1)* %arg to i64 addrspace(1)*
- %safepoint_token = call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* undef, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, i8 addrspace(1)* %arg, i64 addrspace(1)* %cast, i8 addrspace(1)* %arg, i8 addrspace(1)* %arg)
+ %safepoint_token = call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* undef, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, i8 addrspace(1)* %arg, i64 addrspace(1)* %cast, i8 addrspace(1)* %arg, i8 addrspace(1)* %arg)
%reloc = call i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %safepoint_token, i32 9, i32 10)
;; It is perfectly legal to relocate the same value multiple times...
%reloc2 = call i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %safepoint_token, i32 9, i32 10)
@@ -39,7 +39,7 @@ notequal:
ret void
equal:
- %safepoint_token = call i32 (void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* undef, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, i8 addrspace(1)* %arg, i64 addrspace(1)* %cast, i8 addrspace(1)* %arg, i8 addrspace(1)* %arg)
+ %safepoint_token = call i32 (void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(void ()* undef, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 10, i32 0, i8 addrspace(1)* %arg, i64 addrspace(1)* %cast, i8 addrspace(1)* %arg, i8 addrspace(1)* %arg)
%reloc = call i64 addrspace(1)* @llvm.experimental.gc.relocate.p1i64(i32 %safepoint_token, i32 9, i32 10)
call void undef(i64 addrspace(1)* %reloc)
ret void
diff --git a/test/Verifier/varargs-intrinsic.ll b/test/Verifier/varargs-intrinsic.ll
index 2fff1db..26fe61f 100644
--- a/test/Verifier/varargs-intrinsic.ll
+++ b/test/Verifier/varargs-intrinsic.ll
@@ -10,7 +10,7 @@ define void @foo1() {
}
define void @foo2() {
- call void (...)* @llvm.donothing(i64 0, i64 1)
+ call void (...) @llvm.donothing(i64 0, i64 1)
; CHECK: Intrinsic was not defined with variable arguments!
ret void
}