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