------- Comment #3 from rguenther at suse dot de 2008-05-29 09:42 ------- Subject: Re: [4.1/4.2/4.3/4.4 Regression] ICE in simplify_subreg
On Thu, 29 May 2008, ubizjak at gmail dot com wrote: > ------- Comment #2 from ubizjak at gmail dot com 2008-05-29 09:35 ------- > This fails for all optimization levels: > > --cut here-- > extern float c; > > int test(void) > { > return !!c * 7LL == 0; > } > --cut here-- We expand !(c != 0.0) via 8993 op0 = expand_expr (TREE_OPERAND (exp, 0), target, 8994 VOIDmode, EXPAND_NORMAL); 8995 /* The parser is careful to generate TRUTH_NOT_EXPR 8996 only with operands that are always zero or one. */ 8997 temp = expand_binop (mode, xor_optab, op0, const1_rtx, 8998 target, 1, OPTAB_LIB_WIDEN); and op0 is (reg:QI 61) (the comparison result) and mode is DImode for no good reason - well, for the reason the original tree TRUTH_NOT_EXPR has a DImode type... Richard. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36362