1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature 2; RUN: opt -S -openmp-opt-cgscc < %s | FileCheck %s 3; RUN: opt -S -passes=openmp-opt-cgscc < %s | FileCheck %s 4 5target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 6 7@inofth = external global i32, align 4 8 9define void @set() { 10; CHECK-LABEL: define {{[^@]+}}@set() { 11; CHECK-NEXT: entry: 12; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @inofth, align 4 13; CHECK-NEXT: call void @omp_set_num_threads(i32 noundef [[TMP0]]) 14; CHECK-NEXT: ret void 15; 16entry: 17 %0 = load i32, i32* @inofth, align 4 18 call void @omp_set_num_threads(i32 noundef %0) 19 ret void 20} 21 22define i32 @test(i32 %a) { 23; CHECK-LABEL: define {{[^@]+}}@test 24; CHECK-SAME: (i32 [[A:%.*]]) { 25; CHECK-NEXT: entry: 26; CHECK-NEXT: call void @set() 27; CHECK-NEXT: [[CALL:%.*]] = call i32 @omp_get_max_threads() 28; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[CALL]], [[A]] 29; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]] 30; CHECK: if.then: 31; CHECK-NEXT: ret i32 0 32; CHECK: if.end: 33; CHECK-NEXT: ret i32 1 34; 35entry: 36 call void @set() 37 %call = call i32 @omp_get_max_threads() 38 %cmp = icmp ne i32 %call, %a 39 br i1 %cmp, label %if.then, label %if.end 40 41if.then: ; preds = %entry 42 ret i32 0 43 44if.end: ; preds = %if.then, %entry 45 ret i32 1 46} 47 48declare void @omp_set_num_threads(i32 noundef) 49declare i32 @omp_get_max_threads() 50 51!llvm.module.flags = !{!0} 52 53!0 = !{i32 7, !"openmp", i32 50} 54