diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:17:27 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:17:27 +0000 |
| commit | 67c32a98315f785a9ec9d531c1f571a0196c7463 (patch) | |
| tree | 4abb9cbeecc7901726dd0b4a37369596c852e9ef /test/Verifier | |
| parent | 9f61947910e6ab40de38e6b4034751ef1513200f (diff) | |
Notes
Diffstat (limited to 'test/Verifier')
| -rw-r--r-- | test/Verifier/alias.ll | 2 | ||||
| -rw-r--r-- | test/Verifier/comdat.ll | 2 | ||||
| -rw-r--r-- | test/Verifier/comdat2.ll | 2 | ||||
| -rw-r--r-- | test/Verifier/fpmath.ll | 14 | ||||
| -rw-r--r-- | test/Verifier/frameallocate.ll | 48 | ||||
| -rw-r--r-- | test/Verifier/ident-meta1.ll | 6 | ||||
| -rw-r--r-- | test/Verifier/ident-meta2.ll | 8 | ||||
| -rw-r--r-- | test/Verifier/ident-meta3.ll | 4 | ||||
| -rw-r--r-- | test/Verifier/invoke.ll | 2 | ||||
| -rw-r--r-- | test/Verifier/module-flags-1.ll | 47 | ||||
| -rw-r--r-- | test/Verifier/musttail-valid.ll | 23 | ||||
| -rw-r--r-- | test/Verifier/range-1.ll | 49 | ||||
| -rw-r--r-- | test/Verifier/range-2.ll | 10 | ||||
| -rw-r--r-- | test/Verifier/statepoint.ll | 50 |
14 files changed, 196 insertions, 71 deletions
diff --git a/test/Verifier/alias.ll b/test/Verifier/alias.ll index ff02a37bab95d..dd04ae05f6341 100644 --- a/test/Verifier/alias.ll +++ b/test/Verifier/alias.ll @@ -21,7 +21,7 @@ declare void @f() @test3_a = global i32 42 -@test3_b = alias weak i32* @test3_a +@test3_b = weak alias i32* @test3_a @test3_c = alias i32* @test3_b ; CHECK: Alias cannot point to a weak alias ; CHECK-NEXT: i32* @test3_c diff --git a/test/Verifier/comdat.ll b/test/Verifier/comdat.ll index ca47429b10869..dcf67d89f8d7d 100644 --- a/test/Verifier/comdat.ll +++ b/test/Verifier/comdat.ll @@ -1,5 +1,5 @@ ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s $v = comdat any -@v = common global i32 0, comdat $v +@v = common global i32 0, comdat($v) ; CHECK: 'common' global may not be in a Comdat! diff --git a/test/Verifier/comdat2.ll b/test/Verifier/comdat2.ll index d78030c12af81..9d892b974fa93 100644 --- a/test/Verifier/comdat2.ll +++ b/test/Verifier/comdat2.ll @@ -1,5 +1,5 @@ ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s $v = comdat any -@v = private global i32 0, comdat $v +@v = private global i32 0, comdat($v) ; CHECK: comdat global value has private linkage diff --git a/test/Verifier/fpmath.ll b/test/Verifier/fpmath.ll index 7002c5c825f74..2689b69d1d068 100644 --- a/test/Verifier/fpmath.ll +++ b/test/Verifier/fpmath.ll @@ -22,10 +22,10 @@ define void @fpmath1(i32 %i, float %f, <2 x float> %g) { ret void } -!0 = metadata !{ float 1.0 } -!1 = metadata !{ } -!2 = metadata !{ float 1.0, float 1.0 } -!3 = metadata !{ i32 1 } -!4 = metadata !{ float -1.0 } -!5 = metadata !{ float 0.0 } -!6 = metadata !{ float 0x7FFFFFFF00000000 } +!0 = !{ float 1.0 } +!1 = !{ } +!2 = !{ float 1.0, float 1.0 } +!3 = !{ i32 1 } +!4 = !{ float -1.0 } +!5 = !{ float 0.0 } +!6 = !{ float 0x7FFFFFFF00000000 } diff --git a/test/Verifier/frameallocate.ll b/test/Verifier/frameallocate.ll new file mode 100644 index 0000000000000..e3018db15275e --- /dev/null +++ b/test/Verifier/frameallocate.ll @@ -0,0 +1,48 @@ +; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s + +declare i8* @llvm.frameallocate(i32) +declare i8* @llvm.framerecover(i8*, i8*) + +define internal void @f() { + call i8* @llvm.frameallocate(i32 4) + call i8* @llvm.frameallocate(i32 4) + ret void +} +; CHECK: multiple calls to llvm.frameallocate in one function + +define internal void @f_a(i32 %n) { + call i8* @llvm.frameallocate(i32 %n) + ret void +} +; CHECK: llvm.frameallocate argument must be constant integer size + +define internal void @g() { +entry: + br label %not_entry +not_entry: + call i8* @llvm.frameallocate(i32 4) + ret void +} +; CHECK: llvm.frameallocate used outside of entry block + +define internal void @h() { + call i8* @llvm.framerecover(i8* null, i8* null) + ret void +} +; CHECK: llvm.framerecover first argument must be function defined in this module + +@global = constant i8 0 + +declare void @declaration() + +define internal void @i() { + call i8* @llvm.framerecover(i8* @global, i8* null) + ret void +} +; CHECK: llvm.framerecover first argument must be function defined in this module + +define internal void @j() { + call i8* @llvm.framerecover(i8* bitcast(void()* @declaration to i8*), i8* null) + ret void +} +; CHECK: llvm.framerecover first argument must be function defined in this module diff --git a/test/Verifier/ident-meta1.ll b/test/Verifier/ident-meta1.ll index fb247a8c5e2e2..3202fbd3e8f79 100644 --- a/test/Verifier/ident-meta1.ll +++ b/test/Verifier/ident-meta1.ll @@ -4,9 +4,9 @@ ; Each metadata entry can have only one string. !llvm.ident = !{!0, !1} -!0 = metadata !{metadata !"version string"} -!1 = metadata !{metadata !"string1", metadata !"string2"} +!0 = !{!"version string"} +!1 = !{!"string1", !"string2"} ; CHECK: assembly parsed, but does not verify as correct! ; CHECK-NEXT: incorrect number of operands in llvm.ident metadata -; CHECK-NEXT: metadata !1 +; CHECK-NEXT: !1 diff --git a/test/Verifier/ident-meta2.ll b/test/Verifier/ident-meta2.ll index e86f18adc0e84..1c11e1bcba2a3 100644 --- a/test/Verifier/ident-meta2.ll +++ b/test/Verifier/ident-meta2.ll @@ -4,10 +4,10 @@ ; Each metadata entry can contain one string only. !llvm.ident = !{!0, !1, !2, !3} -!0 = metadata !{metadata !"str1"} -!1 = metadata !{metadata !"str2"} -!2 = metadata !{metadata !"str3"} -!3 = metadata !{i32 1} +!0 = !{!"str1"} +!1 = !{!"str2"} +!2 = !{!"str3"} +!3 = !{i32 1} ; CHECK: assembly parsed, but does not verify as correct! ; CHECK-NEXT: invalid value for llvm.ident metadata entry operand(the operand should be a string) ; CHECK-NEXT: i32 1 diff --git a/test/Verifier/ident-meta3.ll b/test/Verifier/ident-meta3.ll index a847b462161df..91e1cfec5023b 100644 --- a/test/Verifier/ident-meta3.ll +++ b/test/Verifier/ident-meta3.ll @@ -4,7 +4,7 @@ ; Each metadata entry can contain one string only. !llvm.ident = !{!0} -!0 = metadata !{metadata !{metadata !"nested metadata"}} +!0 = !{!{!"nested metadata"}} ; CHECK: assembly parsed, but does not verify as correct! ; CHECK-NEXT: invalid value for llvm.ident metadata entry operand(the operand should be a string) -; CHECK-NEXT: metadata !1 +; CHECK-NEXT: !1 diff --git a/test/Verifier/invoke.ll b/test/Verifier/invoke.ll index c2750bb121f28..e80cfcf830b13 100644 --- a/test/Verifier/invoke.ll +++ b/test/Verifier/invoke.ll @@ -46,7 +46,7 @@ contb: define i8 @f2() { entry: -; CHECK: Cannot invoke an intrinsinc other than donothing +; CHECK: Cannot invoke an intrinsinc other than donothing or patchpoint invoke void @llvm.trap() to label %cont unwind label %lpad diff --git a/test/Verifier/module-flags-1.ll b/test/Verifier/module-flags-1.ll index e5feaf3a580d4..36bcb335ffc21 100644 --- a/test/Verifier/module-flags-1.ll +++ b/test/Verifier/module-flags-1.ll @@ -3,57 +3,54 @@ ; Check that module flags are structurally correct. ; ; CHECK: incorrect number of operands in module flag -; CHECK: metadata !0 -!0 = metadata !{ i32 1 } +; CHECK: !0 +!0 = !{i32 1} ; CHECK: invalid behavior operand in module flag (expected constant integer) -; CHECK: metadata !"foo" -!1 = metadata !{ metadata !"foo", metadata !"foo", i32 42 } +; CHECK: !"foo" +!1 = !{!"foo", !"foo", i32 42} ; CHECK: invalid behavior operand in module flag (unexpected constant) ; CHECK: i32 999 -!2 = metadata !{ i32 999, metadata !"foo", i32 43 } +!2 = !{i32 999, !"foo", i32 43} ; CHECK: invalid ID operand in module flag (expected metadata string) ; CHECK: i32 1 -!3 = metadata !{ i32 1, i32 1, i32 44 } +!3 = !{i32 1, i32 1, i32 44} ; CHECK: invalid value for 'require' module flag (expected metadata pair) ; CHECK: i32 45 -!4 = metadata !{ i32 3, metadata !"bla", i32 45 } +!4 = !{i32 3, !"bla", i32 45} ; CHECK: invalid value for 'require' module flag (expected metadata pair) -; CHECK: metadata ! -!5 = metadata !{ i32 3, metadata !"bla", metadata !{ i32 46 } } +; CHECK: ! +!5 = !{i32 3, !"bla", !{i32 46}} ; CHECK: invalid value for 'require' module flag (first value operand should be a string) ; CHECK: i32 47 -!6 = metadata !{ i32 3, metadata !"bla", metadata !{ i32 47, i32 48 } } +!6 = !{i32 3, !"bla", !{i32 47, i32 48}} ; Check that module flags only have unique IDs. ; ; CHECK: module flag identifiers must be unique (or of 'require' type) -!7 = metadata !{ i32 1, metadata !"foo", i32 49 } -!8 = metadata !{ i32 2, metadata !"foo", i32 50 } +!7 = !{i32 1, !"foo", i32 49} +!8 = !{i32 2, !"foo", i32 50} ; CHECK-NOT: module flag identifiers must be unique -!9 = metadata !{ i32 2, metadata !"bar", i32 51 } -!10 = metadata !{ i32 3, metadata !"bar", metadata !{ metadata !"bar", i32 51 } } +!9 = !{i32 2, !"bar", i32 51} +!10 = !{i32 3, !"bar", !{!"bar", i32 51}} ; Check that any 'append'-type module flags are valid. ; CHECK: invalid value for 'append'-type module flag (expected a metadata node) -!16 = metadata !{ i32 5, metadata !"flag-2", i32 56 } +!16 = !{i32 5, !"flag-2", i32 56} ; CHECK: invalid value for 'append'-type module flag (expected a metadata node) -!17 = metadata !{ i32 5, metadata !"flag-3", i32 57 } +!17 = !{i32 5, !"flag-3", i32 57} ; CHECK-NOT: invalid value for 'append'-type module flag (expected a metadata node) -!18 = metadata !{ i32 5, metadata !"flag-4", metadata !{ i32 57 } } +!18 = !{i32 5, !"flag-4", !{i32 57}} ; Check that any 'require' module flags are valid. ; CHECK: invalid requirement on flag, flag is not present in module -!11 = metadata !{ i32 3, metadata !"bar", - metadata !{ metadata !"no-such-flag", i32 52 } } +!11 = !{i32 3, !"bar", !{!"no-such-flag", i32 52}} ; CHECK: invalid requirement on flag, flag does not have the required value -!12 = metadata !{ i32 1, metadata !"flag-0", i32 53 } -!13 = metadata !{ i32 3, metadata !"bar", - metadata !{ metadata !"flag-0", i32 54 } } +!12 = !{i32 1, !"flag-0", i32 53} +!13 = !{i32 3, !"bar", !{!"flag-0", i32 54}} ; CHECK-NOT: invalid requirement on flag, flag is not present in module ; CHECK-NOT: invalid requirement on flag, flag does not have the required value -!14 = metadata !{ i32 1, metadata !"flag-1", i32 55 } -!15 = metadata !{ i32 3, metadata !"bar", - metadata !{ metadata !"flag-1", i32 55 } } +!14 = !{i32 1, !"flag-1", i32 55} +!15 = !{i32 3, !"bar", !{!"flag-1", i32 55}} !llvm.module.flags = !{ !0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, diff --git a/test/Verifier/musttail-valid.ll b/test/Verifier/musttail-valid.ll index 815d77a13e353..bdc0c8cf7fd6c 100644 --- a/test/Verifier/musttail-valid.ll +++ b/test/Verifier/musttail-valid.ll @@ -14,3 +14,26 @@ define i32* @similar_ret_ptrty() { %w = bitcast i8* %v to i32* ret i32* %w } + +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, ...) + 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, ...) + ret void +} + +define x86_thiscallcc void @varargs_thiscall_unreachable(i8* %this, ...) { + unreachable +} + +define x86_thiscallcc void @varargs_thiscall_ret_unreachable(i8* %this, ...) { + musttail call x86_thiscallcc void (i8*, ...)* @varargs_thiscall(i8* %this, ...) + ret void +bb1: + ret void +} diff --git a/test/Verifier/range-1.ll b/test/Verifier/range-1.ll index f15ca3f740656..fda65cbbbb897 100644 --- a/test/Verifier/range-1.ll +++ b/test/Verifier/range-1.ll @@ -5,7 +5,7 @@ entry: store i8 0, i8* %x, align 1, !range !0 ret void } -!0 = metadata !{i8 0, i8 1} +!0 = !{i8 0, i8 1} ; CHECK: Ranges are only for loads, calls and invokes! ; CHECK-NEXT: store i8 0, i8* %x, align 1, !range !0 @@ -14,16 +14,15 @@ entry: %y = load i8* %x, align 1, !range !1 ret i8 %y } -!1 = metadata !{} +!1 = !{} ; CHECK: It should have at least one range! -; CHECK-NEXT: metadata define i8 @f3(i8* %x) { entry: %y = load i8* %x, align 1, !range !2 ret i8 %y } -!2 = metadata !{i8 0} +!2 = !{i8 0} ; CHECK: Unfinished range! define i8 @f4(i8* %x) { @@ -31,7 +30,7 @@ entry: %y = load i8* %x, align 1, !range !3 ret i8 %y } -!3 = metadata !{double 0.0, i8 0} +!3 = !{double 0.0, i8 0} ; CHECK: The lower limit must be an integer! define i8 @f5(i8* %x) { @@ -39,7 +38,7 @@ entry: %y = load i8* %x, align 1, !range !4 ret i8 %y } -!4 = metadata !{i8 0, double 0.0} +!4 = !{i8 0, double 0.0} ; CHECK: The upper limit must be an integer! define i8 @f6(i8* %x) { @@ -47,8 +46,8 @@ entry: %y = load i8* %x, align 1, !range !5 ret i8 %y } -!5 = metadata !{i32 0, i8 0} -; CHECK: Range types must match load type! +!5 = !{i32 0, i8 0} +; CHECK: Range types must match instruction type! ; CHECK: %y = load define i8 @f7(i8* %x) { @@ -56,8 +55,8 @@ entry: %y = load i8* %x, align 1, !range !6 ret i8 %y } -!6 = metadata !{i8 0, i32 0} -; CHECK: Range types must match load type! +!6 = !{i8 0, i32 0} +; CHECK: Range types must match instruction type! ; CHECK: %y = load define i8 @f8(i8* %x) { @@ -65,8 +64,8 @@ entry: %y = load i8* %x, align 1, !range !7 ret i8 %y } -!7 = metadata !{i32 0, i32 0} -; CHECK: Range types must match load type! +!7 = !{i32 0, i32 0} +; CHECK: Range types must match instruction type! ; CHECK: %y = load define i8 @f9(i8* %x) { @@ -74,7 +73,7 @@ entry: %y = load i8* %x, align 1, !range !8 ret i8 %y } -!8 = metadata !{i8 0, i8 0} +!8 = !{i8 0, i8 0} ; CHECK: Range must not be empty! define i8 @f10(i8* %x) { @@ -82,7 +81,7 @@ entry: %y = load i8* %x, align 1, !range !9 ret i8 %y } -!9 = metadata !{i8 0, i8 2, i8 1, i8 3} +!9 = !{i8 0, i8 2, i8 1, i8 3} ; CHECK: Intervals are overlapping define i8 @f11(i8* %x) { @@ -90,7 +89,7 @@ entry: %y = load i8* %x, align 1, !range !10 ret i8 %y } -!10 = metadata !{i8 0, i8 2, i8 2, i8 3} +!10 = !{i8 0, i8 2, i8 2, i8 3} ; CHECK: Intervals are contiguous define i8 @f12(i8* %x) { @@ -98,7 +97,7 @@ entry: %y = load i8* %x, align 1, !range !11 ret i8 %y } -!11 = metadata !{i8 1, i8 2, i8 -1, i8 0} +!11 = !{i8 1, i8 2, i8 -1, i8 0} ; CHECK: Intervals are not in order define i8 @f13(i8* %x) { @@ -106,7 +105,7 @@ entry: %y = load i8* %x, align 1, !range !12 ret i8 %y } -!12 = metadata !{i8 1, i8 3, i8 5, i8 1} +!12 = !{i8 1, i8 3, i8 5, i8 1} ; CHECK: Intervals are contiguous define i8 @f14(i8* %x) { @@ -114,7 +113,7 @@ entry: %y = load i8* %x, align 1, !range !13 ret i8 %y } -!13 = metadata !{i8 1, i8 3, i8 5, i8 2} +!13 = !{i8 1, i8 3, i8 5, i8 2} ; CHECK: Intervals are overlapping define i8 @f15(i8* %x) { @@ -122,7 +121,7 @@ entry: %y = load i8* %x, align 1, !range !14 ret i8 %y } -!14 = metadata !{i8 10, i8 1, i8 12, i8 13} +!14 = !{i8 10, i8 1, i8 12, i8 13} ; CHECK: Intervals are overlapping define i8 @f16(i8* %x) { @@ -130,7 +129,7 @@ entry: %y = load i8* %x, align 1, !range !16 ret i8 %y } -!16 = metadata !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 2} +!16 = !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 2} ; CHECK: Intervals are overlapping define i8 @f17(i8* %x) { @@ -138,5 +137,13 @@ entry: %y = load i8* %x, align 1, !range !17 ret i8 %y } -!17 = metadata !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 1} +!17 = !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 1} ; CHECK: Intervals are contiguous + +define i8 @f18() { +entry: + %y = call i8 undef(), !range !18 + ret i8 %y +} +!18 = !{} +; CHECK: It should have at least one range! diff --git a/test/Verifier/range-2.ll b/test/Verifier/range-2.ll index 1d2e0575d76a6..f8891c83225e8 100644 --- a/test/Verifier/range-2.ll +++ b/test/Verifier/range-2.ll @@ -5,35 +5,35 @@ entry: %y = load i8* %x, align 1, !range !0 ret i8 %y } -!0 = metadata !{i8 0, i8 1} +!0 = !{i8 0, i8 1} define i8 @f2(i8* %x) { entry: %y = load i8* %x, align 1, !range !1 ret i8 %y } -!1 = metadata !{i8 255, i8 1} +!1 = !{i8 255, i8 1} define i8 @f3(i8* %x) { entry: %y = load i8* %x, align 1, !range !2 ret i8 %y } -!2 = metadata !{i8 1, i8 3, i8 5, i8 42} +!2 = !{i8 1, i8 3, i8 5, i8 42} define i8 @f4(i8* %x) { entry: %y = load i8* %x, align 1, !range !3 ret i8 %y } -!3 = metadata !{i8 -1, i8 0, i8 1, i8 2} +!3 = !{i8 -1, i8 0, i8 1, i8 2} define i8 @f5(i8* %x) { entry: %y = load i8* %x, align 1, !range !4 ret i8 %y } -!4 = metadata !{i8 -1, i8 0, i8 1, i8 -2} +!4 = !{i8 -1, i8 0, i8 1, i8 -2} ; We can annotate the range of the return value of a CALL. define void @call_all(i8* %x) { diff --git a/test/Verifier/statepoint.ll b/test/Verifier/statepoint.ll new file mode 100644 index 0000000000000..3fbaeb53f918a --- /dev/null +++ b/test/Verifier/statepoint.ll @@ -0,0 +1,50 @@ +; RUN: opt -S %s -verify | FileCheck %s + +declare void @use(...) +declare i8 addrspace(1)* @llvm.gc.relocate.p1i8(i32, i32, i32) +declare i32 @llvm.statepoint.p0f_isVoidf(void ()*, i32, i32, ...) + +;; Basic usage +define i8 addrspace(1)* @test1(i8 addrspace(1)* %arg) { +entry: + %cast = bitcast i8 addrspace(1)* %arg to i64 addrspace(1)* + %safepoint_token = call i32 (void ()*, i32, i32, ...)* @llvm.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 i8 addrspace(1)* @llvm.gc.relocate.p1i8(i32 %safepoint_token, i32 9, i32 10) + ;; It is perfectly legal to relocate the same value multiple times... + %reloc2 = call i8 addrspace(1)* @llvm.gc.relocate.p1i8(i32 %safepoint_token, i32 9, i32 10) + %reloc3 = call i8 addrspace(1)* @llvm.gc.relocate.p1i8(i32 %safepoint_token, i32 10, i32 9) + ret i8 addrspace(1)* %reloc +; CHECK-LABEL: test1 +; CHECK: statepoint +; CHECK: gc.relocate +; CHECK: gc.relocate +; CHECK: gc.relocate +; CHECK: ret i8 addrspace(1)* %reloc +} + +; This test catches two cases where the verifier was too strict: +; 1) A base doesn't need to be relocated if it's never used again +; 2) A value can be replaced by one which is known equal. This +; means a potentially derived pointer can be known base and that +; we can't check that derived pointer are never bases. +define void @test2(i8 addrspace(1)* %arg, i64 addrspace(1)* %arg2) { +entry: + %cast = bitcast i8 addrspace(1)* %arg to i64 addrspace(1)* + %c = icmp eq i64 addrspace(1)* %cast, %arg2 + br i1 %c, label %equal, label %notequal + +notequal: + ret void + +equal: +%safepoint_token = call i32 (void ()*, i32, i32, ...)* @llvm.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 i8 addrspace(1)* @llvm.gc.relocate.p1i8(i32 %safepoint_token, i32 9, i32 10) + call void undef(i8 addrspace(1)* %reloc) + ret void +; CHECK-LABEL: test2 +; CHECK-LABEL: equal +; CHECK: statepoint +; CHECK-NEXT: %reloc = call +; CHECK-NEXT: call +; CHECK-NEXT: ret voi +} |
