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



  In message <4.2.0.58.20000723094340.00bcc7d0@garfield.dis.com>you write:
  > Hi, Jeff.
  > 
  > In my latest build (using the most recent snapshot), I get:
  > 
  > ../../../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.

  > I know that my function_args() was markedly different from yours
  > before the PA64 additions and now I don't recognize it at all :-)
:-)  It's marginally easier to read if you ignore the PA64 block.

  > In my function_args, I needed to consider that (at least for
  > the MPE port) arguments larger than 2 words were always passed
  > in the stack, regardless of whether or not arg0-arg3 were
  > available for the first long double. But, I don't see that is
  > the case in the current function_args. Note that this is class
  > GENERAL_REGS, so it appears that this might be the issue since
  > this long double value should be loaded into the GENERAL_REGS.
See FUNCTION_ARG_PASS_BY_REFERENCE.

  > "Any Larger Than 64 Bits: A short pointer (using sr5-sr7) to the
  > high-order byte of the value is passed as a nonfloating-point
  > 32-bit value parameter."
Same for hpux.

jeff




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