| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| ; RUN: llvm-as < %s | llvm-dis | FileCheck %s | ||
| ; RUN: verify-uselistorder %s | ||
|
|
||
| ; CHECK: @a = global [4 x void ()*] [void ()* no_cfi @f1, void ()* @f1, void ()* @f2, void ()* no_cfi @f2] | ||
| @a = global [4 x void ()*] [void ()* no_cfi @f1, void ()* @f1, void ()* @f2, void ()* no_cfi @f2] | ||
| ; CHECK: @b = constant void ()* no_cfi @f3 | ||
| @b = constant void ()* no_cfi @f3 | ||
| ; CHECK: @c = constant void ()* @f3 | ||
| @c = constant void ()* @f3 | ||
|
|
||
| ; CHECK: declare void @f1() | ||
| declare void @f1() | ||
|
|
||
| ; CHECK: declare void @f2() | ||
| declare void @f2() | ||
|
|
||
| ; CHECK: define void @f3() | ||
| define void @f3() { | ||
| ; CHECK: call void no_cfi @f4() | ||
| call void no_cfi @f4() | ||
| ; CHECK: call void @f4() | ||
| call void @f4() | ||
| ; CHECK: call void no_cfi @f5() | ||
| call void no_cfi @f5() | ||
| ; CHECK: call void @f5() | ||
| call void @f5() | ||
| ret void | ||
| } | ||
|
|
||
| ; CHECK: declare void @f4() | ||
| declare void @f4() | ||
|
|
||
| ; CHECK: declare void @f5() | ||
| declare void @f5() | ||
|
|
||
| define void @g() { | ||
| %n = alloca void ()*, align 8 | ||
| ; CHECK: store void ()* no_cfi @f5, void ()** %n, align 8 | ||
| store void ()* no_cfi @f5, void ()** %n, align 8 | ||
| %1 = load void ()*, void ()** %n | ||
| call void %1() | ||
| ret void | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| ; RUN: opt -S -lowertypetests %s | llc -asm-verbose=false | FileCheck %s | ||
|
|
||
| target datalayout = "e-p:64:64" | ||
| target triple = "x86_64-unknown-linux-gnu" | ||
|
|
||
| ; CHECK: a: | ||
| ; CHECK-NEXT: .quad f1 | ||
| ; CHECK-NEXT: .quad .L.cfi.jumptable | ||
| ; CHECK-NEXT: .quad .L.cfi.jumptable | ||
| ; CHECK-NEXT: .quad f2 | ||
| ; CHECK-NEXT: .quad f3 | ||
| ; CHECK-NEXT: .quad f3.cfi | ||
| @a = global [6 x void ()*] [void ()* no_cfi @f1, void ()* @f1, void ()* @f2, void ()* no_cfi @f2, void ()* @f3, void ()* no_cfi @f3] | ||
|
|
||
| declare !type !0 void @f1() | ||
|
|
||
| define internal void @f2() !type !0 { | ||
| ret void | ||
| } | ||
|
|
||
| define void @f3() #0 !type !0 { | ||
| ret void | ||
| } | ||
|
|
||
| declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone | ||
|
|
||
| define i1 @foo(i8* %p) { | ||
| %x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1") | ||
| ret i1 %x | ||
| } | ||
|
|
||
| !llvm.module.flags = !{!1} | ||
|
|
||
| attributes #0 = { "cfi-canonical-jump-table" } | ||
|
|
||
| !0 = !{i32 0, !"typeid1"} | ||
| !1 = !{i32 4, !"CFI Canonical Jump Tables", i32 0} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| ; RUN: opt -S -lowertypetests < %s | FileCheck %s | ||
|
|
||
| target datalayout = "e-p:64:64" | ||
| target triple = "x86_64-unknown-linux-gnu" | ||
|
|
||
| ; CHECK: @a = global [6 x void ()*] [void ()* no_cfi @f1, void ()* @.cfi.jumptable, void ()* bitcast ([8 x i8]* getelementptr inbounds ([3 x [8 x i8]], [3 x [8 x i8]]* bitcast (void ()* @.cfi.jumptable to [3 x [8 x i8]]*), i64 0, i64 1) to void ()*), void ()* no_cfi @f2, void ()* @f3, void ()* no_cfi @f3.cfi] | ||
| @a = global [6 x void ()*] [void ()* no_cfi @f1, void ()* @f1, void ()* @f2, void ()* no_cfi @f2, void ()* @f3, void ()* no_cfi @f3] | ||
|
|
||
| ; CHECK: define void @f1() | ||
| define void @f1() !type !0 { | ||
| ret void | ||
| } | ||
|
|
||
| ; CHECK: define internal void @f2() | ||
| define internal void @f2() !type !0 { | ||
| ret void | ||
| } | ||
|
|
||
| ; CHECK: define hidden void @f3.cfi() | ||
| define void @f3() #0 !type !0 { | ||
| ret void | ||
| } | ||
|
|
||
| declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone | ||
|
|
||
| define i1 @foo(i8* %p) { | ||
| %x = call i1 @llvm.type.test(i8* %p, metadata !"typeid1") | ||
| ret i1 %x | ||
| } | ||
|
|
||
| !llvm.module.flags = !{!1} | ||
|
|
||
| attributes #0 = { "cfi-canonical-jump-table" } | ||
|
|
||
| !0 = !{i32 0, !"typeid1"} | ||
| !1 = !{i32 4, !"CFI Canonical Jump Tables", i32 0} |