------- Comment #4 from ebotcazou at gcc dot gnu dot org  2010-01-12 08:57 
-------
> Then gcc comes to line3657. Since changed_i3_dest is 0, gcc does not
> call adjust_for_new_dest at all.
> 
> line3657:
> if (changed_i3_dest)
>     {
>       PATTERN (i3) = newpat;
>       adjust_for_new_dest (i3);
>     }

We should try and set changed_i3_dest to 1 in this particular case as well.

Where does the dest get changed exactly?

> I did not read the entire combine pass. So I am not sure whether it is
> fine to just add something like this after line3062 where
> recog_for_combine is called.
> 
>           if (insn_code_number >= 0)
>             changed_i3_dest = 1;

Too big a hammer, the dest of I3 is generally not changed.

> Another option to fix this problem is not to attach REG_EQUAL note to
> "set subreg reg" at all during forward propagation.

Too big a hammer as well, the note is correct at this point.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42691

Reply via email to