1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s 2 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -O0 | FileCheck %s --check-prefix=CHECK_O0 3 4 int x; 5 int y(void); 6 void foo(); 7 void FUNC() { 8 // CHECK-LABEL: define void @FUNC() 9 // CHECK: [[call:%.*]] = call i32 @y 10 // CHECK_O0: [[call:%.*]] = call i32 @y 11 // CHECK_O0-NOT: call i64 @llvm.expect 12 if (__builtin_expect (x, y())) 13 foo (); 14 } 15 16 // rdar://9330105 17 void isigprocmask(void); 18 long bar(); 19 20 int main() { 21 (void) __builtin_expect((isigprocmask(), 0), bar()); 22 } 23 24 // CHECK-LABEL: define i32 @main() 25 // CHECK: call void @isigprocmask() 26 // CHECK: [[C:%.*]] = call i64 (...) @bar() 27 // CHECK_O0: call void @isigprocmask() 28 // CHECK_O0: [[C:%.*]] = call i64 (...) @bar() 29 // CHECK_O0-NOT: call i64 @llvm.expect 30 31 32 // CHECK-LABEL: define i32 @test1 33 int test1(int x) { 34 // CHECK_O0-NOT: call i64 @llvm.expect 35 if (__builtin_expect (x, 1)) 36 return 0; 37 return x; 38 } 39 40 // CHECK: define i32 @test2 41 int test2(int x) { 42 // CHECK_O0-NOT: call i64 @llvm.expect 43 switch(__builtin_expect(x, 5)) { 44 default: 45 return 0; 46 case 0: 47 case 1: 48 case 2: 49 return 1; 50 case 5: 51 return 5; 52 }; 53 54 return 0; 55 } 56