Internal compiler error in `emit_call_1' - vax-dec-ultrix4.3
John David Anglin
dave@hiauly1.hia.nrc.ca
Wed Aug 4 12:40:00 GMT 1999
The following error occurs bootstrapping gcc version 2.95 19990728 (release)
on a vax-dec-ultrix4.3 machine. It occurs in stage1 compiling the module
_varargs.o in libgcc2.c.
...
_varargs
../../gcc/libgcc2.c: In function `__builtin_saveregs':
../../gcc/libgcc2.c:1396: Internal compiler error in `emit_call_1', at calls.c:4
46
Please submit a full bug report.
On the vax, __builtin_saveregs is simply
void *
__builtin_saveregs ()
{
abort ();
}
The internal compiler error occurs when emit_call_1 is called with the
arguments:
emit_call_1 (funexp=0x176978, fndecl=0x176914, funtype=0x1a12f0, stack_size=0,
rounded_stack_size=0, struct_value_size=0, next_arg_reg=0x0, valreg=0x0,
old_inhibit_defer_pop=0, call_fusage=0x0, is_const=0)
Note that stack_size=0. This is the expected value for a function with
no argument bytes to pop.
On the vax, RETURN_POPS_ARGS is:
#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) (SIZE)
As a result, the variable n_popped in emit_call_1 is 0 and the `if' at
line 408 results in the internal compiler error.
Clearly, the code needs to handle the case where n_popped=0. Possibly,
the condition `n_popped > 0' can be eliminated from the `if' at line 408?
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
More information about the Gcc-bugs
mailing list