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: [PATCH] [POWERPC] Fix PR44419


On Fri, Jun 04, 2010 at 04:47:37PM -0500, Peter Bergner wrote:
> On Fri, 2010-06-04 at 16:21 -0500, Edmar Wienskoski-RA8797 wrote:
> > Peter Bergner wrote:
> > > DDmode needs to be handled similarly to DFmode, so this should
> > > probably look like:
> > >
> > > (define_mode_iterator DIFD
> > >   [DI
> > >    (DF "!TARGET_E500_DOUBLE")
> > >    (DD "!TARGET_E500_DOUBLE")])
> > >
> > I found through testing that that is not the case. The e500v2 behaves 
> > like the rest of powerpc
> > architectures in regards of DD mode. It is only DF mode that the 
> > behavior is different.
> 
> I think you still need that part.  The reason you are hitting the ICE
> with DFmode values and not DDmode values is due to a "feature" in the
> 32-bit ABI where DFmode values have to be passed in integer registers
> in some cases.  That is not the case with DDmode values.  However, I
> think you could hit a similar ICE with DDmode values if we have lots
> of register pressure and the register allocator/reload decides to stash
> a DDmode value into a integer register pair.  It's unlikely, but I
> believe it could happen.

Certainly consistency with other occurrences of TARGET_E500_DOUBLE and
DDmode throughout rs6000.c suggest that Peter's changes are correct.

-Nathan


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