------- Comment #2 from rguenth at gcc dot gnu dot org 2009-01-30 13:39 ------- Confirmed. There's a type mismatch in the substituted statement:
pretmp.27_29 = *&cpumask.bits[0] arg 1 <indirect_ref 0x7ffff75267c0 type <integer_type 0x7ffff7e89540 int> arg 0 <addr_expr 0x7ffff752a180 type <pointer_type 0x7ffff7f71f00> constant invariant arg 0 <array_ref 0x7ffff7514730 type <integer_type 0x7ffff7e89600 unsigned int> arg 0 <component_ref 0x7ffff75147d0 type <array_type 0x7ffff7f71e40> arg 0 <var_decl 0x7ffff7f3c8c0 cpumask> arg 1 <field_decl 0x7ffff7f3c820 bits>> arg 1 <integer_cst 0x7ffff7e79c00 constant invariant 0>>>>> we have int and unsigned int. The INDIRECT_REF has the wrong type. forwprop causes this and creates int * a; ... a_15 = &cpumask.bits[D.1587_13]; -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-01-30 13:39:10 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39041