This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Long Double Register Spillage in PA Port
- To: law at cygnus dot com
- Subject: Re: Long Double Register Spillage in PA Port
- From: Mark Klein <mklein at dis dot com>
- Date: Sun, 30 Jul 2000 18:46:47 -0700
- Cc: gcc at gcc dot gnu dot org
- References: <Your message of Sun, 23 Jul 2000 10:06:28 PDT. <4.2.0.58.20000723094340.00bcc7d0@garfield.dis.com>
At 08:58 PM 7/23/00 -0600, Jeffrey A Law wrote:
> >
> > ../../../libstdc++/std/ldcomplex.h: In method `complex<long
> > double>::complex (long double, long double)':
> > ../../../libstdc++/std/ldcomplex.h:39: Unable to find a register to
> > spill in class `GENERAL_REGS'.
> > ../../../libstdc++/std/ldcomplex.h:39: This is the insn:
> > (insn 10 17 12 (set (subreg:SI (reg/v:TF 40 %fr8) 0)
> > (mem/f:SI (reg/v:SI 19 %r19) 0)) 69 {pre_ldw-4} (nil)
> > (nil))
> > ../../../libstdc++/std/ldcomplex.h:39: Internal compiler error in `
> > spill_failure', at reload1.c:1826
> >
> > Is this something you've seen in other PA ports, or could this
> > be something just in my port?
>Nope, I haven't seen that at all.
Hi, Jeff.
You had long double successfully working on a pa32 port? Hmm ...
The culprit in this case is HARD_REGNO_MODE_OK. I don't understand
why yours would work for HP-UX on PA32 and not for MPE unless the
HP-UX calling conventions are different?
The main difference is the following that I added in my port
for GET_MODE_SIZE > 8 (e.g. TF):
|| ((REGNO) & 3) == 0
(Remember, I'm !TARGET_PA_11)
This make sense?
Regards,
M.
--
Mark Klein DIS International, Ltd.
http://www.dis.com 415-892-8400
PGP Public Key Available