[Bug target/36362] [4.1/4.2/4.3/4.4 Regression] ICE in simplify_subreg
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Thu May 29 09:43:00 GMT 2008
------- 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
More information about the Gcc-bugs
mailing list