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]
Other format: [Raw text]

Re: analysis #2: alpha bootstrap failure on mainline


On Wed, 7 May 2003, Alan Modra wrote:
> On Wed, May 07, 2003 at 02:04:23PM +0930, Alan Modra wrote:
> > On Tue, May 06, 2003 at 09:51:19PM -0600, Roger Sayle wrote:
> > > Have there been any recent changes to how multiple structures that
> > > aren't a multiple of a word size are passed to functions that return
> > > structures?  Does anyone recognize this?
> >
> > I gave the function arg code a poke on 20030502.  You might like to
> > try reverting my patch and see if that fixes the testcase.

Hi Alan,

Thanks for the pointer.  Yep, that's the cause.  Reverting the following
patch allows alphaev67-dec-osf5.1 to complete the three stage bootstrap
of the core compilers.

2003-05-02  Alan Modra  <amodra@bigpond.net.au>

       * calls.c (struct arg_data): Move offset, slot_offset, size and
       alignment_pad to struct locate_and_pad_arg_data.  Update all refs.
       (initialize_argument_information): Adjust call to locate_and_pad_parm.
       Delete alignment_pad var.  Don't calculate slot_offset here.
       (emit_library_call_value_1): Delete alignment_pad, offset and size
       vars.  Use struct locate_and_pad_arg_data instead.  Adjust refs.
       Adjust call to locate_and_pad_parm.  Don't tweak arg size for
       partial in-regs here.  Formatting fixes.
       * expr.h (struct locate_and_pad_arg_data): New struct.
       (locate_and_pad_parm): Adjust declaration.
       * function.c (assign_parms): Localize vars.  Use "locate" instead
       of other arg location vars.  Don't invoke FUNCTION_ARG or
       FUNCTION_INCOMING_ARG unless pretend_named is different from
       named_arg.  Heed MUST_PASS_IN_STACK and set up "partial" before
       calling locate_and_pad_parm.  Adjust locate_and_pad_parm call.
       Use slot_offset for stack home of reg parms.  Correct test for
       parm passed in memory.  Formatting fixes.
       (locate_and_pad_parm): Add "partial" to params.  Replace offset_ptr
       arg_size_ptr and alignment pad with "locate".  Set slot_offset here.
       Correct initial_offset_ptr handling.  Localize vars.  Always pad
       locate->offset even when in_regs.


Unfortunately, the bootstrap goes on to fail building ./libs/libgcj.la-4.o
with numerous error messages of the form:
.libs/libgcj.la-4.o: branch relocation out-of-range, bad object file
produced, can't branch from 0x3ffbfff8870 to 0xfffffffffffffffc

But that's another investigation.


> Or better, http://gcc.gnu.org/ml/gcc-patches/2003-05/msg00575.html

Excellent.  I'll check whether this fixes the regression.

Roger
--


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