xref: /llvm-project/llvm/test/Transforms/Attributor/reduced/pred_iterator_crash.ll (revision cd3a4c31bc9694d160de54c6a4daa53e152cb463)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes --check-attributes --check-globals
2; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal  -attributor-annotate-decl-cs  -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT
3; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal  -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,CGSCC
4
5%"struct.ompx::state::TeamStateTy" = type { %"struct.ompx::state::ICVStateTy", i32, i32, ptr }
6%"struct.ompx::state::ICVStateTy" = type { i32, i32, i32, i32, i32, i32 }
7
8@_ZN4ompx5state9TeamStateE = internal addrspace(3) global %"struct.ompx::state::TeamStateTy" undef
9
10; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
11declare void @llvm.assume(i1 noundef) #0
12
13;.
14; CHECK: @_ZN4ompx5state9TeamStateE = internal addrspace(3) global %"struct.ompx::state::TeamStateTy" undef
15;.
16define weak_odr amdgpu_kernel void @__omp_offloading_16_19bc70bc_main_l44() {
17; CHECK-LABEL: define {{[^@]+}}@__omp_offloading_16_19bc70bc_main_l44() {
18; CHECK-NEXT:    ret void
19;
20  call fastcc void @__omp_outlined__()
21  ret void
22}
23
24define internal fastcc void @__omp_outlined__() {
25; CGSCC: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
26; CGSCC-LABEL: define {{[^@]+}}@__omp_outlined__
27; CGSCC-SAME: () #[[ATTR1:[0-9]+]] {
28; CGSCC-NEXT:    br label [[TMP2:%.*]]
29; CGSCC:       1:
30; CGSCC-NEXT:    unreachable
31; CGSCC:       2:
32; CGSCC-NEXT:    ret void
33;
34  %1 = load i32, ptr getelementptr inbounds (i8, ptr addrspacecast (ptr addrspace(3) @_ZN4ompx5state9TeamStateE to ptr), i64 4), align 4
35  br label %4
36
372:                                                ; No predecessors!
38  %3 = icmp eq i32 %1, 0
39  call void @llvm.assume(i1 %3)
40  br label %4
41
424:                                                ; preds = %2, %0
43  ret void
44}
45;.
46; TUNIT: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) }
47;.
48; CGSCC: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) }
49; CGSCC: attributes #[[ATTR1]] = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) }
50;.
51;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
52; TUNIT: {{.*}}
53