------- Comment #9 from rguenth at gcc dot gnu dot org 2008-11-06 13:24 ------- We ICE during greg trying to do
#3 0x0000000000d86888 in force_const_mem (mode=DFmode, x=0x7ffff7e7c410) at /space/rguenther/src/svn/gcc-4_3-branch/gcc/varasm.c:3535 3535 align = CONSTANT_ALIGNMENT (make_tree (type, x), align); (gdb) l 3530 align = GET_MODE_ALIGNMENT (mode == VOIDmode ? word_mode : mode); 3531 #ifdef CONSTANT_ALIGNMENT 3532 { 3533 tree type = lang_hooks.types.type_for_mode (mode, 0); 3534 if (type != NULL_TREE) 3535 align = CONSTANT_ALIGNMENT (make_tree (type, x), align); 3536 } 3537 #endif and call make_tree with (const_int 1 [0x1]) and double. Oops. More reduced C testcase: void foo(double); void CreateDefaultTexture(double mnMinimum, double mnMaximum, unsigned short nCreateWhat) { double d = 0.0; for(;;) { if(nCreateWhat & (0x0001) && mnMinimum != 0.0) d = mnMinimum; if(nCreateWhat & (0x0002) && mnMaximum != 0.0) d = mnMaximum; foo(d); } } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37969