------- Comment #3 from rguenth at gcc dot gnu dot org 2007-11-16 18:17 ------- Confirmed. Still broken on the 4.1 and 4.2 branches. Wrong types on the comparison:
D.1530_7 == 0B (gdb) call debug_tree (expr) <eq_expr 0xb7c0f1d4 type <boolean_type 0xb7c1a4ac _Bool public unsigned QI size <integer_cst 0xb7c081f8 constant invariant 8> unit size <integer_cst 0xb7c08210 constant invariant 1> align 8 symtab 0 alias set -1 precision 1 min <integer_cst 0xb7c085e8 0> max <integer_cst 0xb7c08618 1>> arg 0 <ssa_name 0xb7c9a480 type <integer_type 0xb7c1a2e0 unsigned int public unsigned SI size <integer_cst 0xb7c083f0 constant invariant 32> unit size <integer_cst 0xb7c08180 constant invariant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0xb7c08468 0> max <integer_cst 0xb7c08450 4294967295>> var <var_decl 0xb7c14268 D.1530> def_stmt <modify_expr 0xb7c0f2f4> version 7> arg 1 <integer_cst 0xb7c08a98 type <pointer_type 0xb7c1a8fc> constant invariant 0>> _Bool D.1532; _Bool D.1531; unsigned int D.1530; unsigned int D.1529; unsigned int myvar.1; int myvar.0; <bb 2>: myvar.0_3 = myvar; myvar.1_4 = (unsigned int) myvar.0_3; D.1529_6 = myvar.1_4 >> mynum_5; D.1530_7 = D.1529_6 & 1; D.1531_8 = D.1530_7 == 0B; probably some fold bug. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |ice-on-valid-code Known to work|4.0.0 |4.0.0 4.3.0 Last reconfirmed|0000-00-00 00:00:00 |2007-11-16 18:17:11 date| | Summary|ICE in in |[4.1/4.2 Regression] ICE in |compare_values_warnv, at |in compare_values_warnv, at |tree-vrp.c:701 |tree-vrp.c:701 Target Milestone|--- |4.2.3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34030