xref: /llvm-project/llvm/test/Transforms/OpenMP/remove_noinline_attributes.ll (revision 56be9123ca411b001cc6ebd84c36a62c72bd825c)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes
2; RUN: opt < %s -S -passes=openmp-opt-cgscc | FileCheck %s
3
4declare void @unknown()
5
6; __kmpc functions
7define void @__kmpc_noinline() noinline nounwind {
8; CHECK: Function Attrs: nounwind
9; CHECK-LABEL: @__kmpc_noinline(
10; CHECK-NEXT:    call void @unknown()
11; CHECK-NEXT:    ret void
12;
13  call void @unknown()
14  ret void
15}
16; omp_X functions
17define void @omp_noinline() noinline nounwind {
18; CHECK: Function Attrs: nounwind
19; CHECK-LABEL: @omp_noinline(
20; CHECK-NEXT:    call void @unknown()
21; CHECK-NEXT:    ret void
22;
23  call void @unknown()
24  ret void
25}
26; _OMP namespace
27define void @_ZN4ompx_noinline() noinline nounwind {
28; CHECK: Function Attrs: nounwind
29; CHECK-LABEL: @_ZN4ompx_noinline(
30; CHECK-NEXT:    call void @unknown()
31; CHECK-NEXT:    ret void
32;
33  call void @unknown()
34  ret void
35}
36
37; Negative tests:
38
39define void @__kmpc_noinline_optnone() noinline optnone nounwind {
40; CHECK: Function Attrs: noinline nounwind optnone
41; CHECK-LABEL: @__kmpc_noinline_optnone(
42; CHECK-NEXT:    call void @unknown()
43; CHECK-NEXT:    ret void
44;
45  call void @unknown()
46  ret void
47}
48define void @omp_noinline_optnone() noinline optnone nounwind {
49; CHECK: Function Attrs: noinline nounwind optnone
50; CHECK-LABEL: @omp_noinline_optnone(
51; CHECK-NEXT:    call void @unknown()
52; CHECK-NEXT:    ret void
53;
54  call void @unknown()
55  ret void
56}
57; _OMP namespace
58define void @_ZN4ompx_noinline_optnone() noinline optnone nounwind {
59; CHECK: Function Attrs: noinline nounwind optnone
60; CHECK-LABEL: @_ZN4ompx_noinline_optnone(
61; CHECK-NEXT:    call void @unknown()
62; CHECK-NEXT:    ret void
63;
64  call void @unknown()
65  ret void
66}
67define void @a___kmpc_noinline() noinline nounwind {
68; CHECK: Function Attrs: noinline nounwind
69; CHECK-LABEL: @a___kmpc_noinline(
70; CHECK-NEXT:    call void @unknown()
71; CHECK-NEXT:    ret void
72;
73  call void @unknown()
74  ret void
75}
76define void @a_omp_noinline() noinline nounwind {
77; CHECK: Function Attrs: noinline nounwind
78; CHECK-LABEL: @a_omp_noinline(
79; CHECK-NEXT:    call void @unknown()
80; CHECK-NEXT:    ret void
81;
82  call void @unknown()
83  ret void
84}
85define void @a__ZN4ompx_noinline() noinline nounwind {
86; CHECK: Function Attrs: noinline nounwind
87; CHECK-LABEL: @a__ZN4ompx_noinline(
88; CHECK-NEXT:    call void @unknown()
89; CHECK-NEXT:    ret void
90;
91  call void @unknown()
92  ret void
93}
94
95!llvm.module.flags = !{!0, !1}
96
97!0 = !{i32 7, !"openmp", i32 50}
98!1 = !{i32 7, !"openmp-device", i32 50}
99