1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm %s -o /dev/null 2*67e74705SXin Li 3*67e74705SXin Li /* In this testcase, the return value of foo() is being promoted to a register 4*67e74705SXin Li * which breaks stuff 5*67e74705SXin Li */ 6*67e74705SXin Li int printf(const char * restrict format, ...); 7*67e74705SXin Li 8*67e74705SXin Li union X { char X; void *B; int a, b, c, d;}; 9*67e74705SXin Li foo()10*67e74705SXin Liunion X foo() { 11*67e74705SXin Li union X Global; 12*67e74705SXin Li Global.B = (void*)123; /* Interesting part */ 13*67e74705SXin Li return Global; 14*67e74705SXin Li } 15*67e74705SXin Li main()16*67e74705SXin Liint main() { 17*67e74705SXin Li union X test = foo(); 18*67e74705SXin Li printf("0x%p", test.B); 19*67e74705SXin Li } 20