1/* { dg-do compile } */ 2/* { dg-options "-O -mfpmath=sse -msse2" } */ 3/* { dg-require-effective-target sse2 } */ 4/* The fact that t1 and t2 are uninitialized is critical. With them 5 uninitialized, the register allocator is free to put them in the same 6 hard register, which results in 7 8 xmm0 = xmm0 >= xmm0 ? xmm0 : xmm0 9 10 Which is of course a nop, but one for which we would ICE splitting the 11 pattern. */ 12 13double out; 14 15static void foo(void) 16{ 17 double t1, t2, t3, t4; 18 19 t4 = t1 >= t2 ? t1 : t2; 20 t4 = t4 >= t3 ? t4 : t3; 21 out = t4; 22} 23