------- Comment #1 from ibolton at gcc dot gnu dot org 2010-09-08 16:21 ------- reg is assigned to a temporary (reg.0) at the very first tree pass, as shown by this 004t.gimple dump:
d () { struct b * const reg.0; unsigned int * D.2019; int D.2020; goto <D.1276>; <D.1275>: c (); <D.1276>: reg.0 = reg; D.2019 = ®.0->j; D.2020 = diff (D.2019); if (D.2020 != 0) goto <D.1275>; else goto <D.1277>; <D.1277>: } I'm thinking that this is perfectly normal thing to do, and that the redundant move is meant to disappear in a later pass. My guess is that IRA is choosing not to assign the pseudo to r4, but I do not know why at the moment. -- ibolton at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |missed-optimization, ra Known to fail| |4.5.3 4.6.0 Last reconfirmed|0000-00-00 00:00:00 |2010-09-08 16:21:50 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43491