| Chris Lattner | 56784f9 | 2011-04-16 23:15:35 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s | 
| Chris Lattner | 91dacfe | 2007-07-13 20:18:44 +0000 | [diff] [blame] | 2 |  | 
| Mike Stump | 11289f4 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 3 | float test1(int cond, float a, float b) { | 
| Chris Lattner | 91dacfe | 2007-07-13 20:18:44 +0000 | [diff] [blame] | 4 | return cond ? a : b; | 
|  | 5 | } | 
| Mike Stump | 11289f4 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 6 |  | 
|  | 7 | double test2(int cond, float a, double b) { | 
| Chris Lattner | 91dacfe | 2007-07-13 20:18:44 +0000 | [diff] [blame] | 8 | return cond ? a : b; | 
|  | 9 | } | 
| Chris Lattner | b6a7b58 | 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 | 1bc0fed | 2008-01-30 17:02:03 +0000 | [diff] [blame] | 17 | void test4() { | 
| Mike Stump | 11289f4 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 18 | int i; short j; | 
|  | 19 | float* k = 1 ? &i : &j; | 
| Eli Friedman | 1bc0fed | 2008-01-30 17:02:03 +0000 | [diff] [blame] | 20 | } | 
| Eli Friedman | de4496b | 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 | cb92a3f | 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 | 7bd6e58 | 2008-06-04 19:15:45 +0000 | [diff] [blame] | 32 |  | 
|  | 33 | void _efree(void *ptr); | 
|  | 34 |  | 
| Mike Stump | 11289f4 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 35 | void _php_stream_free3() { | 
|  | 36 | (1 ? free(0) : _efree(0)); | 
| Nuno Lopes | 7bd6e58 | 2008-06-04 19:15:45 +0000 | [diff] [blame] | 37 | } | 
|  | 38 |  | 
| Mike Stump | 11289f4 | 2009-09-09 15:08:12 +0000 | [diff] [blame] | 39 | void _php_stream_free4() { | 
|  | 40 | 1 ? _efree(0) : free(0); | 
| Nuno Lopes | 7bd6e58 | 2008-06-04 19:15:45 +0000 | [diff] [blame] | 41 | } | 
| Eli Friedman | b0bc559 | 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 | 56784f9 | 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 | } | 
| Eli Friedman | 516c2ad | 2011-12-08 22:01:56 +0000 | [diff] [blame] | 69 | // CHECK: @test13 | 
|  | 70 | // CHECK: call {{.*}} @f2( | 
|  | 71 | int f2(void); | 
|  | 72 | void test13() { | 
|  | 73 | f2() ? (void)0 : (void)0; | 
|  | 74 | } |