This is the mail archive of the gcc@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]

Re: Long Double Register Spillage in PA Port


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			

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