Jeffrey Law - Re: [RTL, ColdFire 24/63] Add support for a MODE_INDEX_REG_CLASS macro (original) (raw)
This is the mail archive of the gcc-patches@gcc.gnu.orgmailing 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] |
- From: Jeffrey Law
- To: Richard Sandiford
- Cc: gcc-patches at gcc dot gnu dot org, mark at codesourcery dot com
- Date: Mon, 12 Feb 2007 16:21:05 -0700
- Subject: Re: [RTL, ColdFire 24/63] Add support for a MODE_INDEX_REG_CLASS macro
- References: 874pqzw4w1.fsf@firetop.home <87wt3vtalc.fsf_-_@firetop.home> <87slejtaia.fsf_-_@firetop.home> <87odp7tag7.fsf_-_@firetop.home> <87k5zvtad6.fsf_-_@firetop.home> <87fyajtaas.fsf_-_@firetop.home> <87bql7ta58.fsf_-_@firetop.home> <877ivvt9ws.fsf_-_@firetop.home> <873b6jt9r5.fsf_-_@firetop.home> <87y7obrv3h.fsf_-_@firetop.home> <87tzyzrv1p.fsf_-_@firetop.home> <87ps9nruzl.fsf_-_@firetop.home> <87lkkbrux2.fsf_-_@firetop.home> <87hcuzruvd.fsf_-_@firetop.home> <87d55nruu3.fsf_-_@firetop.home> <878xgbruqs.fsf_-_@firetop.home> 1168457319.28081.615.camel@sweet.slc.redhat.com 87k5zuinc0.fsf@firetop.home 1168983686.28081.842.camel@sweet.slc.redhat.com 87ps9efc4t.fsf@talisman.home 87fya82kk3.fsf@talisman.home <87r6szfjoh.fsf@firetop.home>
- Reply-to: law at redhat dot com
On Fri, 2007-02-09 at 15:13 +0000, Richard Sandiford wrote:
The ColdFire FPU has no instructions for moving an indexed address into an FP register. This leads to the crucial point: Right. As I've said, this is a subst of the PA (actually, the PA has no way to do an indexed store from an integer register, but that's close enough).
The bug is about addresses generated by find_reloads_address. If double_reg_address_ok is true, find_reloads_address will reload an out-of-range offset into an index register. So let's say we have: And I believe this is the source of your problem. The backend has lied to reload.
double_reg_address_ok is computed by generating some RTL for addresses, then passing them along to G_I_L_A. If G_I_L_A returns true, then reload deems it is free to generate reg+reg addressing modes.
Specifically the code actually generates
(plus (plus (FP) (indexreg)) (const_int 4))
If it's a valid address for any indexreg, then double_reg_address_ok is set to 1 and reload generates reg+reg addressing modes. Stop lying to reload about the legitimacy of that kind of address and these problems ought to go away. You might even look into the idea of rejecting such addresses only for the sake of reload since I think rejecting them in general is likely to lead to a performance issue on the m68k.
jeff
- Follow-Ups:
- Re: [RTL, ColdFire 24/63] Add support for a MODE_INDEX_REG_CLASS macro
* From: Roman Zippel
- Re: [RTL, ColdFire 24/63] Add support for a MODE_INDEX_REG_CLASS macro
- References:
- Re: [RTL, ColdFire 24/63] Add support for a MODE_INDEX_REG_CLASS macro
* From: Richard Sandiford
- Re: [RTL, ColdFire 24/63] Add support for a MODE_INDEX_REG_CLASS macro
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |