This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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