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

Reply via email to