[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / Transforms / CrossDSOCFI / basic.ll
blobd31f6c0c0481341317f301af8a1a887670ec7fc8
1 ; RUN: opt -S -passes=cross-dso-cfi < %s | FileCheck %s
3 ; CHECK:     define void @__cfi_check(i64 %[[TYPE:.*]], ptr %[[ADDR:.*]], ptr %[[DATA:.*]]) align 4096
4 ; CHECK:     switch i64 %[[TYPE]], label %[[FAIL:.*]] [
5 ; CHECK-NEXT:   i64 111, label %[[L1:.*]]
6 ; CHECK-NEXT:   i64 222, label %[[L2:.*]]
7 ; CHECK-NEXT:   i64 333, label %[[L3:.*]]
8 ; CHECK-NEXT:   i64 444, label %[[L4:.*]]
9 ; CHECK-NEXT: {{]$}}
11 ; CHECK:     [[EXIT:.*]]:
12 ; CHECK-NEXT:   ret void
14 ; CHECK:     [[FAIL]]:
15 ; CHECK-NEXT:   call void @__cfi_check_fail(ptr %[[DATA]], ptr %[[ADDR]])
16 ; CHECK-NEXT:   br label %[[EXIT]]
18 ; CHECK:     [[L1]]:
19 ; CHECK-NEXT:   call i1 @llvm.type.test(ptr %[[ADDR]], metadata i64 111)
20 ; CHECK-NEXT:   br {{.*}} label %[[EXIT]], label %[[FAIL]]
22 ; CHECK:     [[L2]]:
23 ; CHECK-NEXT:   call i1 @llvm.type.test(ptr %[[ADDR]], metadata i64 222)
24 ; CHECK-NEXT:   br {{.*}} label %[[EXIT]], label %[[FAIL]]
26 ; CHECK:     [[L3]]:
27 ; CHECK-NEXT:   call i1 @llvm.type.test(ptr %[[ADDR]], metadata i64 333)
28 ; CHECK-NEXT:   br {{.*}} label %[[EXIT]], label %[[FAIL]]
30 ; CHECK:     [[L4]]:
31 ; CHECK-NEXT:   call i1 @llvm.type.test(ptr %[[ADDR]], metadata i64 444)
32 ; CHECK-NEXT:   br {{.*}} label %[[EXIT]], label %[[FAIL]]
34 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
35 target triple = "x86_64-unknown-linux-gnu"
37 @_ZTV1A = constant i8 0, !type !4, !type !5
38 @_ZTV1B = constant i8 0, !type !4, !type !5, !type !6, !type !7
40 define signext i8 @f11() !type !0 !type !1 {
41 entry:
42   ret i8 1
45 define signext i8 @f12() !type !0 !type !1 {
46 entry:
47   ret i8 2
50 define signext i8 @f13() !type !0 !type !1 {
51 entry:
52   ret i8 3
55 define i32 @f21() !type !2 !type !3 {
56 entry:
57   ret i32 4
60 define i32 @f22() !type !2 !type !3 {
61 entry:
62   ret i32 5
65 define weak_odr hidden void @__cfi_check_fail(ptr, ptr) {
66 entry:
67   ret void
70 !llvm.module.flags = !{!8}
72 !0 = !{i64 0, !"_ZTSFcvE"}
73 !1 = !{i64 0, i64 111}
74 !2 = !{i64 0, !"_ZTSFivE"}
75 !3 = !{i64 0, i64 222}
76 !4 = !{i64 16, !"_ZTS1A"}
77 !5 = !{i64 16, i64 333}
78 !6 = !{i64 16, !"_ZTS1B"}
79 !7 = !{i64 16, i64 444}
80 !8 = !{i32 4, !"Cross-DSO CFI", i32 1}