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: 128 bit floats on PA64


> On the 64-bit port, there may be a problem with SImode
> loads into FPRs as these are narrower than a word.  However, there
> shouldn't be a problem with a DImode SUBREG of a TFmode register.
> I think this is where Steve had a problem.  I think the
> CLASS_CANNOT_CHANGE_MODE_P test needs reworking.

Do you have a suggestion about what CLASS_CANNOT_CHANGE_MODE_P should
look like?  Here is an example of what I get with the existing
CLASS_CANNOT_CHANGE_MODE_P and 128 bit floats.

[hpsje - sje_merge_2] $ cat x.c
long double
to_ld (int n)
{
  return n;
}

main ()
{
  int n;
  long double x;
  if (to_ld(10) != 10.0)
    abort ();
  exit (0);
}

[hpsje - sje_merge_2] $ obj_pa64_gcc/gcc/cc1 x.c
 to_ld main
x.c: In function `main':
x.c:14: error: unrecognizable insn:
(insn 18 20 19 0 800003fffaf73e40 (set (subreg:DI (reg:TF 69) 0)
        (subreg:DI (reg:TF 32 %fr4) 0)) -1 (nil)
    (nil))
x.c:14: internal compiler error: Internal compiler error in extract_insn, at recog.c:2178
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.


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