This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Patch for PR target/21723, hppa 1.0 bootstrap failure
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- To: sje at cup dot hp dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 1 Jul 2005 15:52:09 -0400 (EDT)
- Subject: Re: Patch for PR target/21723, hppa 1.0 bootstrap failure
> Currently on hppa, if HARD_REGNO_NREGS is called with a floating point
> register and a complex mode (like SCmode) and TARGET_PA_11 is set to
> FALSE, it thinks it can store the complex mode in a single floating
> point register. This will happen when initializing the hard_regno_nregs
> array.
>
> This behaviour is incorrect and I think HARD_REGNO_NREGS was set up this
> way before the complex modes were introduced into GCC. This patch makes
> it clear that complex modes cannot be put into a single floating point
> register regardless of the PA architecture (PA1.0, PA1.1, or PA2.0).
>
> Tested on hppa 1.1 and hppa64 for regressions and on hppa 1.0 to make
> sure the test case in the PR works.
>
> OK for checkin?
I don't believe the fix is correct. The correct PA 1.0 value is
(GET_MODE_SIZE (MODE) + 8 - 1) / 8). The PA 1.0 registers are
64-bits wide (8 bytes wide). The Snake (PA 1.1 and later) FP regs
are treated as being 32-bits wide (4 bytes). Using the Snake
formula for PA 1.0 isn't right.
Could you try the above?
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)