This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PING [ARM, RFC] Fix strange code in arm_legitimize_address


On 01/21/2011 06:35 PM, Ramana Radhakrishnan wrote:

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.

I did a regression testing with "-march=armv7-a -mfloat-abi=softfp -mfpu=neon" on qemu for gcc, g++, libstdc++. No regressions are found.


-- Jie Zhang


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]