[Bug tree-optimization/31632] [4.1 regression] ICE in compare_values
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Apr 19 11:56:00 GMT 2007
------- Comment #2 from jakub at gcc dot gnu dot org 2007-04-19 12:56 -------
I'd say this is a frontend bug (in all of 4.1/4.2/4.3 at least), it shouldn't
have created
<eq_expr 0x2aaaadff85a0
type <boolean_type 0x2aaaae0018f0 _Bool public unsigned QI
size <integer_cst 0x2aaaadff2660 constant invariant 8>
unit size <integer_cst 0x2aaaadff2690 constant invariant 1>
align 8 symtab 0 alias set -1 precision 1 min <integer_cst
0x2aaaadff2e40 0> max <integer_cst 0x2aaaadff2ea0 1>>
arg 0 <ssa_name 0x2aaaae1bd700
type <integer_type 0x2aaaae0016e0 long unsigned int sizes-gimplified
public unsigned DI
size <integer_cst 0x2aaaadff2c00 constant invariant 64>
unit size <integer_cst 0x2aaaadff2c30 constant invariant 8>
align 64 symtab 0 alias set -1 precision 64 min <integer_cst
0x2aaaadff2d20 0> max <integer_cst 0x2aaaadff2cf0 18446744073709551615>>
var <var_decl 0x2aaaae1a8b00 a> def_stmt <modify_expr 0x2aaaadff8550>
version 3>
arg 1 <integer_cst 0x2aaaae00c7e0 type <pointer_type 0x2aaaae011160>
constant invariant 0>
A.c:12>
i.e. a comparison with integral type on one size and pointer on another one.
In 4.2+ forwprop1 fixes this up to comparison against 0L, but in 4.1 it makes
it through that up to vrp which asserts this is not the case.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31632
More information about the Gcc-bugs
mailing list