This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFA: small patch to fix IRA crash of m68k compiler
Vladimir Makarov <vmakarov@redhat.com> writes:
> Andreas Schwab wrote:
>> Vladimir Makarov <vmakarov@redhat.com> writes:
>>
>>
>>> Index: ira-conflicts.c
>>> ===================================================================
>>> --- ira-conflicts.c (revision 140014)
>>> +++ ira-conflicts.c (working copy)
>>> @@ -366,6 +366,9 @@ process_regs_for_copy (rtx reg1, rtx reg
>>> }
>>> else
>>> return false;
>>> + if (hard_regno < 0)
>>> + /* Can not be tied. */
>>> + return false;
>>>
>>
>> IMHO this is just papering over the bug. Please explain the meaning of
>> the expressions for hard_rego. What is the significance of an unrelated
>> register wrt. this insn for the function?
>>
>>
> I don't think that is just papering of the bug.
>
> (insn 22 17 28 4 /cvs/gcc/libgcc/../gcc/libgcc2.c:169 (set (reg/i:SI 0 %d0)
> (subreg:SI (reg/v:DI 30 [ w ]) 4)) 36 {*movsi_m68k2} (expr_list:REG_DEAD (reg/v:DI 30 [ w ])
> (nil)))
>
> Hard_regno here means hard register preference for pseudo#30 to remove the
> insn. It is not possible in this case. It would be possible if the
> destination register would be >= 1.
Thanks for the explanation. Isn't it also possible that hard_regno
becomes too big (>= FIRST_PSEUDO_REGISTER)?
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."