PING [ARM, RFC] Fix strange code in arm_legitimize_address

Ramana Radhakrishnan ramana.radhakrishnan@arm.com
Fri Jan 21 10:43:00 GMT 2011


On Fri, 2011-01-21 at 10:28 +0800, Jie Zhang wrote:
> On 01/21/2011 02:58 AM, Ramana Radhakrishnan wrote:
> > On Mon, Jan 17, 2011 at 2:12 AM, Jie Zhang<jie@codesourcery.com>  wrote:
> >> PING.
> >>
> >> On 12/31/2010 10:26 PM, Jie Zhang wrote:
> >>>
> >>> Hi,
> >>>
> >>> I found this while looking at something else. The following code in
> >>> arm_legitimize_address is confusing for me:
> >>>
> >>> if (GET_CODE (x) == PLUS)
> >>> {
> >>> rtx xop0 = XEXP (x, 0);
> >>> rtx xop1 = XEXP (x, 1);
> >>>
> >>> if (CONSTANT_P (xop0)&&  !symbol_mentioned_p (xop0))
> >>> xop0 = force_reg (SImode, xop0);
> >>>
> >>> if (CONSTANT_P (xop1)&&  !symbol_mentioned_p (xop1))
> >>> xop1 = force_reg (SImode, xop1);<== code A
> >>>
> >>> if (ARM_BASE_REGISTER_RTX_P (xop0)
> >>> &&  GET_CODE (xop1) == CONST_INT)
> >>> {
> >>> ...<== code B
> >>> }
> >>> ...
> >>> }
> >>>
> >>> The code B will never be executed since xop1 will never be a CONST_INT.
> >>> If it were, it would have already been put into a reg by code A.
> >
> > Yeah I went through this and couldn't make out why this is the way it
> > is. Looks good to me though I can't approve or reject your patch.
> >
> Thanks for taking a look! That piece of code can be traced back to more 
> than 15 years ago. Maybe only Richard still remembers the original 
> reason behind it.

Probably - Just noticed that you'd tested only for the basic
multilibs.It might be worth testing for a vfp variant at v7-a just of
paranoia since this is a code path that hasn't been exercised for 15
years though I think it should be safe.

Ramana
> 
> 
> Regards,




More information about the Gcc-patches mailing list