blob: 664c6b6a470ecb45c8bf458927d1886431460d0e [file] [log] [blame]
Fariborz Jahanianec991952011-04-25 22:30:02 +00001// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
Fariborz Jahaniane42b8a52010-07-26 23:11:03 +00002
3int x;
4int y(void);
5void foo();
6void FUNC() {
7// CHECK: [[call:%.*]] = call i32 @y
8 if (__builtin_expect (x, y()))
9 foo ();
10}
11
Fariborz Jahanianec991952011-04-25 22:30:02 +000012// rdar://9330105
13void isigprocmask(void);
14long bar();
15
16int main() {
17 (void) __builtin_expect((isigprocmask(), 0), bar());
18}
19
20// CHECK: call void @isigprocmask()
John McCalla8a16d52011-09-21 08:34:49 +000021// CHECK: [[C:%.*]] = call i64 (...)* @bar()
Jakub Staszak558229f2011-07-08 22:45:14 +000022
23
24// CHECK: @test1
25int test1(int x) {
26// CHECK: @llvm.expect
27 if (__builtin_expect (x, 1))
28 return 0;
29 return x;
30}
31
32// CHECK: @test2
33int test2(int x) {
34// CHECK: @llvm.expect
35 switch(__builtin_expect(x, 5)) {
36 default:
37 return 0;
38 case 0:
39 case 1:
40 case 2:
41 return 1;
42 case 5:
43 return 5;
44 };
45
46 return 0;
47}