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: 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)


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