This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
RE: irix6.5 bootstrap failure in mips/mips.c
- From: "Billinghurst, David (CRTS)" <David dot Billinghurst at riotinto dot com>
- To: <gcc-bugs at gcc dot gnu dot org>
- Cc: <rsandifo at redhat dot com>,<rth at redhat dot com>,<echristo at redhat dot com>
- Date: Tue, 26 Mar 2002 14:56:02 +1100
- Subject: RE: irix6.5 bootstrap failure in mips/mips.c
OK. The search through CVS shows failure was introduced on Mar 22
between 09:54 UTC and 09:56 UTC by
2002-03-22 Richard Sandiford <rsandifo@redhat.com>
* config/mips/abi64.h (SETUP_INCOMING_VARARGS): Undefine.
* config/mips/mips-protos.h (mips_setup_incoming_varargs): Declare.
(function_arg): Constify CUMULATIVE_ARGS.
(function_arg_partial_nregs, function_arg_pass_by_reference): Likewise.
* config/mips/mips.h (UNITS_PER_FPVALUE): Zero when TARGET_SOFT_FLOAT.
(UNITS_PER_DOUBLE): New macro.
(SETUP_INCOMING_VARARGS): Define. Use mips_setup_incoming_varargs.
(CUMULATIVE_ARGS): Reformat. Remove num_adjusts workaround and
last_arg_fp field. Replace arg_words and fp_arg_words with gp_regs,
fp_regs and stack_words.
(EABI_FLOAT_VARARGS_P): New macro.
* config/mips/mips.c (struct mips_arg_info): New.
(mips_arg_info): New function.
(function_arg_advance): Use it. Add adjustment instructions here
rather than in function_arg.
(function_arg): Constify CUMULATIVE_ARGS. Use mips_arg_info. Check
for VOIDmode at the beginning of the function.
(function_partial_nregs): Constify CUMULATIVE_ARGS. Use mips_arg_info.
(function_arg_pass_by_reference): Likewise.
(mips_setup_incoming_varags): New, largely based on old abi64.h code.
(mips_build_va_list): Test EABI_FLOAT_VARARGS_P.
(mips_va_start): Likewise. Use the new stack_words field of
CUMULATIVE_ARGS to set up overflow area. Reformat.
(mips_va_arg): Test EABI_FLOAT_VARARGS_P. Unify EABI handling of
doubles and other types, aligning the overflow pointer for non-doubles
too. Remove some code duplication. Replace hard-coded constants.
The error is
> "/exd4/billingd/src/gcc/gcc/config/mips/mips.c", line 4026: error(1565):
> struct "mips_args" has no field "__fp_regs"
> ? cum->fp_regs
> ^
The
#define fp_regs __fp_regs
comes from /usr/include/sys/ucontext.h
#if _SGIAPI && !defined(__SGI_NOUCONTEXT_COMPAT)
#define fpregset __fpregset
#define fp_r __fp_r
#define fp_dregs __fp_dregs
#define fp_fregs __fp_fregs
#define fp_regs __fp_regs
#define fp_csr __fp_csr
#define fp_pad __fp_pad
#define gregs __gregs
#define fpregs __fpregs
#define ucontext __ucontext
#define sigaltstack _sigaltstack
#endif
The include sequence is
/exd4/billingd/src/gcc/gcc/system.h:# include <sys/param.h>
/usr/include/sys/param.h:#include <sys/signal.h>
/usr/include/sys/signal.h:#include <sys/ucontext.h>