Chris Lattner | c6bea67 | 2011-04-16 23:15:35 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s |
Chris Lattner | 8da1cb6 | 2007-07-13 20:18:44 +0000 | [diff] [blame] | 2 | |
Mike Stump | 1eb4433 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 3 | float test1(int cond, float a, float b) { |
Chris Lattner | 8da1cb6 | 2007-07-13 20:18:44 +0000 | [diff] [blame] | 4 | return cond ? a : b; |
| 5 | } |
Mike Stump | 1eb4433 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 6 | |
| 7 | double test2(int cond, float a, double b) { |
Chris Lattner | 8da1cb6 | 2007-07-13 20:18:44 +0000 | [diff] [blame] | 8 | return cond ? a : b; |
| 9 | } |
Chris Lattner | 2202bce | 2007-11-30 17:56:23 +0000 | [diff] [blame] | 10 | |
| 11 | void f(); |
| 12 | |
| 13 | void test3(){ |
| 14 | 1 ? f() : (void)0; |
| 15 | } |
| 16 | |
Eli Friedman | b1284ac | 2008-01-30 17:02:03 +0000 | [diff] [blame] | 17 | void test4() { |
Mike Stump | 1eb4433 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 18 | int i; short j; |
| 19 | float* k = 1 ? &i : &j; |
Eli Friedman | b1284ac | 2008-01-30 17:02:03 +0000 | [diff] [blame] | 20 | } |
Eli Friedman | 68f624e | 2008-02-10 23:18:23 +0000 | [diff] [blame] | 21 | |
| 22 | void test5() { |
| 23 | const int* cip; |
| 24 | void* vp; |
| 25 | cip = 0 ? vp : cip; |
| 26 | } |
Eli Friedman | 145c083 | 2008-05-16 17:37:11 +0000 | [diff] [blame] | 27 | |
| 28 | void test6(); |
| 29 | void test7(int); |
| 30 | void* test8() {return 1 ? test6 : test7;} |
| 31 | |
Nuno Lopes | 108f55d | 2008-06-04 19:15:45 +0000 | [diff] [blame] | 32 | |
| 33 | void _efree(void *ptr); |
| 34 | |
Mike Stump | 1eb4433 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 35 | void _php_stream_free3() { |
| 36 | (1 ? free(0) : _efree(0)); |
Nuno Lopes | 108f55d | 2008-06-04 19:15:45 +0000 | [diff] [blame] | 37 | } |
| 38 | |
Mike Stump | 1eb4433 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 39 | void _php_stream_free4() { |
| 40 | 1 ? _efree(0) : free(0); |
Nuno Lopes | 108f55d | 2008-06-04 19:15:45 +0000 | [diff] [blame] | 41 | } |
Eli Friedman | 16fea9b | 2009-11-17 01:22:05 +0000 | [diff] [blame] | 42 | |
| 43 | // PR5526 |
| 44 | struct test9 { int a; }; |
| 45 | void* test9spare(); |
| 46 | void test9(struct test9 *p) { |
| 47 | p ? p : test9spare(); |
| 48 | } |
| 49 | |
Chris Lattner | c6bea67 | 2011-04-16 23:15:35 +0000 | [diff] [blame^] | 50 | // CHECK: @test10 |
| 51 | // CHECK: select i1 {{.*}}, i32 4, i32 5 |
| 52 | int test10(int c) { |
| 53 | return c ? 4 : 5; |
| 54 | } |
| 55 | enum { Gronk = 5 }; |
| 56 | |
| 57 | // rdar://9289603 |
| 58 | // CHECK: @test11 |
| 59 | // CHECK: select i1 {{.*}}, i32 4, i32 5 |
| 60 | int test11(int c) { |
| 61 | return c ? 4 : Gronk; |
| 62 | } |
| 63 | |
| 64 | // CHECK: @test12 |
| 65 | // CHECK: select i1 {{.*}}, double 4.0{{.*}}, double 2.0 |
| 66 | double test12(int c) { |
| 67 | return c ? 4.0 : 2.0; |
| 68 | } |