------- 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