1c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s 28da1cb633967a8b0b235854508638f42197d4acbChris Lattner 31eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpfloat test1(int cond, float a, float b) { 48da1cb633967a8b0b235854508638f42197d4acbChris Lattner return cond ? a : b; 58da1cb633967a8b0b235854508638f42197d4acbChris Lattner} 61eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 71eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpdouble test2(int cond, float a, double b) { 88da1cb633967a8b0b235854508638f42197d4acbChris Lattner return cond ? a : b; 98da1cb633967a8b0b235854508638f42197d4acbChris Lattner} 102202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattner 112202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattnervoid f(); 122202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattner 132202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattnervoid test3(){ 142202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattner 1 ? f() : (void)0; 152202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattner} 162202bce80fc72d067cbe67dc1512f7b45351fd31Chris Lattner 17b1284ace14b7eb3cc206a3285e743861ab1a4773Eli Friedmanvoid test4() { 181eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump int i; short j; 191eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump float* k = 1 ? &i : &j; 20b1284ace14b7eb3cc206a3285e743861ab1a4773Eli Friedman} 2168f624e9eb2d80b2e5c1a51471a76782cb1bc70bEli Friedman 2268f624e9eb2d80b2e5c1a51471a76782cb1bc70bEli Friedmanvoid test5() { 2368f624e9eb2d80b2e5c1a51471a76782cb1bc70bEli Friedman const int* cip; 2468f624e9eb2d80b2e5c1a51471a76782cb1bc70bEli Friedman void* vp; 2568f624e9eb2d80b2e5c1a51471a76782cb1bc70bEli Friedman cip = 0 ? vp : cip; 2668f624e9eb2d80b2e5c1a51471a76782cb1bc70bEli Friedman} 27145c08360a8ef90392bb0482c94f47e632e78f8cEli Friedman 28145c08360a8ef90392bb0482c94f47e632e78f8cEli Friedmanvoid test6(); 29145c08360a8ef90392bb0482c94f47e632e78f8cEli Friedmanvoid test7(int); 30145c08360a8ef90392bb0482c94f47e632e78f8cEli Friedmanvoid* test8() {return 1 ? test6 : test7;} 31145c08360a8ef90392bb0482c94f47e632e78f8cEli Friedman 32108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76Nuno Lopes 33108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76Nuno Lopesvoid _efree(void *ptr); 34108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76Nuno Lopes 351eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpvoid _php_stream_free3() { 361eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump (1 ? free(0) : _efree(0)); 37108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76Nuno Lopes} 38108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76Nuno Lopes 391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpvoid _php_stream_free4() { 401eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 1 ? _efree(0) : free(0); 41108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76Nuno Lopes} 4216fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedman 4316fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedman// PR5526 4416fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedmanstruct test9 { int a; }; 4516fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedmanvoid* test9spare(); 4616fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedmanvoid test9(struct test9 *p) { 4716fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedman p ? p : test9spare(); 4816fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedman} 4916fea9b2e5888443a6e2f96b397c92d3f6710ee8Eli Friedman 50c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// CHECK: @test10 51c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// CHECK: select i1 {{.*}}, i32 4, i32 5 52c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattnerint test10(int c) { 53c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner return c ? 4 : 5; 54c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner} 55c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattnerenum { Gronk = 5 }; 56c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner 57c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// rdar://9289603 58c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// CHECK: @test11 59c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// CHECK: select i1 {{.*}}, i32 4, i32 5 60c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattnerint test11(int c) { 61c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner return c ? 4 : Gronk; 62c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner} 63c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner 64c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// CHECK: @test12 65c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner// CHECK: select i1 {{.*}}, double 4.0{{.*}}, double 2.0 66c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattnerdouble test12(int c) { 67c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner return c ? 4.0 : 2.0; 68c6bea67efc38b075c401ebdb6ae97afa08cbb51dChris Lattner} 691e4f68ce0bffd9a6b9a8fc56d1766177382788e3Eli Friedman// CHECK: @test13 701e4f68ce0bffd9a6b9a8fc56d1766177382788e3Eli Friedman// CHECK: call {{.*}} @f2( 711e4f68ce0bffd9a6b9a8fc56d1766177382788e3Eli Friedmanint f2(void); 721e4f68ce0bffd9a6b9a8fc56d1766177382788e3Eli Friedmanvoid test13() { 731e4f68ce0bffd9a6b9a8fc56d1766177382788e3Eli Friedman f2() ? (void)0 : (void)0; 741e4f68ce0bffd9a6b9a8fc56d1766177382788e3Eli Friedman} 75