Patch to fix gcc.c-torture/compile/20010102-1.c on IA64 HP-UX

Jeff Law law@redhat.com
Tue Sep 16 21:48:00 GMT 2008


Steve Ellcey wrote:
> On Tue, 2008-09-16 at 14:15 -0600, Jeff Law wrote:
>
>   
>> But this shouldn't be necessary.  REG_POINTER is set within the RTX for 
>> the original pseudo and alter_reg (via changing REGNO) preserves the 
>> setting for use post-reload, even though we're looking at a hard register.
>>
>> My recommendation for Steve is the same.  First ensure that REG_POINTER 
>> is set on the appropriate REG within the insn when the insn is created, 
>> then go forward and pinpoint where it disappears as the disappearance is 
>> a bug.
>> Jeff
>>     
>
> Well, it disappears during the rtx register renaming phase and
> I thought I was fixing it by preserving it during register renaming.
> This is where it disappears.   If I add -fno-rename-registers the
> problem goes away.
>   
I went back and found the original message (luckily this is a short 
thread :-)


I think the real problem here is definitely regrename.   We do have to 
be careful about setting REG_POINTER on a hard register, but I think 
we're OK in do_replace as we're always generating a new RTX in that case.

The other two are less clear.  If we choose to only fix do_replace, then 
we might want an indicator in the debugging dumps for the other two 
(find_oldest_value_reg, copyprop_hardreg_forward_1)  when we lose a 
REG_POINTER flag.  It might help diagnose future instances of this problem.

Jeff




More information about the Gcc-patches mailing list