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 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.


Regards, -- Jie Zhang


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