conditional-gnu-ext.cpp revision 56ca35d396d8692c384c785f9aeebcf22563fe1e
1af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s 2af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian// rdar: // 8353567 3af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian// pr7726 4af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian 5af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanianextern "C" int printf(...); 6af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian 756ca35d396d8692c384c785f9aeebcf22563fe1eJohn McCallvoid test0() { 856ca35d396d8692c384c785f9aeebcf22563fe1eJohn McCall// CHECK: call i32 (...)* @printf({{.*}}, i8* inttoptr (i64 3735928559 to i8*)) 9af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian printf("%p\n", (void *)0xdeadbeef ? : (void *)0xaaaaaa); 10af9b96828f9126d993c3e155b8453be62013b735Fariborz Jahanian} 111fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian 121fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian// rdar://8446940 131fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahaniannamespace radar8446940 { 141fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanianextern "C" void abort(); 151fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian 161fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanianint main () { 171fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian char x[1]; 181fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian char *y = x ? : 0; 191fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian 201fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian if (x != y) 211fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian abort(); 221fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian} 231fb019bf42f5757c027edb56e5bb70233787a39cFariborz Jahanian} 24aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian 25aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahaniannamespace radar8453812 { 26aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanianextern "C" void abort(); 27aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian_Complex int getComplex(_Complex int val) { 28aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian static int count; 29aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian if (count++) 30aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian abort(); 31aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian return val; 32aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian} 33aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian 34aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian_Complex int cmplx() { 35aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian _Complex int cond; 36aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian _Complex int rhs; 37aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian 38aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian return getComplex(1+2i) ? : rhs; 39aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian} 40aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian 410b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian// lvalue test 420b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanianvoid foo (int& lv) { 430b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian ++lv; 440b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian} 450b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian 460b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanianint global = 1; 470b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian 480b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanianint &cond() { 490b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian static int count; 500b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian if (count++) 510b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian abort(); 520b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian return global; 530b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian} 540b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian 550b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian 56aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanianint main() { 57aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian cmplx(); 580b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian int rhs = 10; 590b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian foo (cond()? : rhs); 600b78710636671eeb2c5c4dedffa4ad1d58fa4bb8Fariborz Jahanian return global-2; 61aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian} 62aa3b57ee9e36a805371e2a543383225cdd2a5d83Fariborz Jahanian} 63