This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
egcs-980115 bootstrap fails in calls.c, patch included
- To: law at cygnus dot com
- Subject: egcs-980115 bootstrap fails in calls.c, patch included
- From: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Date: Fri, 16 Jan 1998 12:13:00 -0500 (EST)
- Cc: egcs at cygnus dot com
I had some more trouble with egcs-980115 bootstrapping on hpux9
and aix4 in stage1, solaris2 choked in stage2. Below are the hpux9
diagnostics:
> cc -c -DIN_GCC -g -DHAVE_CONFIG_H -DHAIFA -I. -I. -I./config calls.c
> cc: "calls.c", line 1726: error 1000: Unexpected symbol: "i".
> cc: "calls.c", line 1726: error 1002: Unexpected character: 'l'.
> cc: "calls.c", line 1726: error 1000: Unexpected symbol: "e".
> cc: "calls.c", line 1726: error 1002: Unexpected character: 's'.
> cc: "calls.c", line 1726: error 1000: Unexpected symbol: "e".
> cc: "calls.c", line 1726: error 1004: Unexpected end of line.
> [etc]
This happens because there are some cpp directives inside a
macro call, indeed even on platforms which don't choke on this
immediately in stage1 (eg sol2), gcc -W -Wall emits a warning in stage2:
calls.c:1736: warning: preprocessing directive not recognized within macro arg
Here is a sample of the relevant code.
> stack_area = gen_rtx_MEM (save_mode,
> memory_address (save_mode,
>
> #ifdef ARGS_GROW_DOWNWARD
> plus_constant (argblock,
> - high_to_save)
> #else
> plus_constant (argblock,
> low_to_save)
> #endif
));
it becomes this one liner with embedded cpp directives:
stack_area = gen_rtx_fmt_e(MEM,(save_mode),( memory_address (save_mode, #ifdef plus_constant_wide (argblock, (int) ( - high_to_save)) #else plus_constant_wide (argblock, (int) ( low_to_save)) #endif )));
Here is a patch which fixes this.
Fri Jan 16 12:00:35 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* calls.c (expand_call): Move cpp directives outside of a macro's
parameter list.
(emit_library_call): Likewise.
(emit_library_call_value): Likewise.
*** gcc/calls.c~ Wed Jan 14 18:10:03 1998
--- gcc/calls.c Thu Jan 15 14:39:01 1998
***************
*** 1723,1739 ****
BIGGEST_ALIGNMENT / UNITS_PER_WORD) - 1)))
save_mode = BLKmode;
! stack_area = gen_rtx_MEM (save_mode,
! memory_address (save_mode,
!
#ifdef ARGS_GROW_DOWNWARD
! plus_constant (argblock,
! - high_to_save)
#else
! plus_constant (argblock,
! low_to_save)
#endif
! ));
if (save_mode == BLKmode)
{
save_area = assign_stack_temp (BLKmode, num_to_save, 0);
--- 1723,1737 ----
BIGGEST_ALIGNMENT / UNITS_PER_WORD) - 1)))
save_mode = BLKmode;
! stack_area =
#ifdef ARGS_GROW_DOWNWARD
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, - high_to_save)));
#else
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, low_to_save)));
#endif
!
if (save_mode == BLKmode)
{
save_area = assign_stack_temp (BLKmode, num_to_save, 0);
***************
*** 2215,2231 ****
if (save_area)
{
enum machine_mode save_mode = GET_MODE (save_area);
! rtx stack_area
! = gen_rtx_MEM (save_mode,
! memory_address (save_mode,
#ifdef ARGS_GROW_DOWNWARD
! plus_constant (argblock,
! - high_to_save)
#else
! plus_constant (argblock,
! low_to_save)
#endif
- ));
if (save_mode != BLKmode)
emit_move_insn (stack_area, save_area);
--- 2213,2226 ----
if (save_area)
{
enum machine_mode save_mode = GET_MODE (save_area);
! rtx stack_area =
#ifdef ARGS_GROW_DOWNWARD
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, - high_to_save)));
#else
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, low_to_save)));
#endif
if (save_mode != BLKmode)
emit_move_insn (stack_area, save_area);
***************
*** 2574,2590 ****
BIGGEST_ALIGNMENT / UNITS_PER_WORD) - 1)))
save_mode = BLKmode;
! stack_area = gen_rtx_MEM (save_mode,
! memory_address (save_mode,
!
#ifdef ARGS_GROW_DOWNWARD
! plus_constant (argblock,
! - high_to_save)
#else
! plus_constant (argblock,
! low_to_save)
#endif
! ));
if (save_mode == BLKmode)
{
save_area = assign_stack_temp (BLKmode, num_to_save, 0);
--- 2569,2583 ----
BIGGEST_ALIGNMENT / UNITS_PER_WORD) - 1)))
save_mode = BLKmode;
! stack_area =
#ifdef ARGS_GROW_DOWNWARD
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, - high_to_save)));
#else
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, low_to_save)));
#endif
!
if (save_mode == BLKmode)
{
save_area = assign_stack_temp (BLKmode, num_to_save, 0);
***************
*** 2740,2754 ****
if (save_area)
{
enum machine_mode save_mode = GET_MODE (save_area);
! rtx stack_area
! = gen_rtx_MEM (save_mode,
! memory_address (save_mode,
#ifdef ARGS_GROW_DOWNWARD
! plus_constant (argblock, - high_to_save)
#else
! plus_constant (argblock, low_to_save)
#endif
- ));
if (save_mode != BLKmode)
emit_move_insn (stack_area, save_area);
--- 2733,2746 ----
if (save_area)
{
enum machine_mode save_mode = GET_MODE (save_area);
! rtx stack_area =
#ifdef ARGS_GROW_DOWNWARD
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, - high_to_save)));
#else
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, low_to_save)));
#endif
if (save_mode != BLKmode)
emit_move_insn (stack_area, save_area);
***************
*** 3142,3158 ****
BIGGEST_ALIGNMENT / UNITS_PER_WORD) - 1)))
save_mode = BLKmode;
! stack_area = gen_rtx_MEM (save_mode,
! memory_address (save_mode,
!
#ifdef ARGS_GROW_DOWNWARD
! plus_constant (argblock,
! - high_to_save)
#else
! plus_constant (argblock,
! low_to_save)
#endif
! ));
if (save_mode == BLKmode)
{
save_area = assign_stack_temp (BLKmode, num_to_save, 0);
--- 3134,3148 ----
BIGGEST_ALIGNMENT / UNITS_PER_WORD) - 1)))
save_mode = BLKmode;
! stack_area =
#ifdef ARGS_GROW_DOWNWARD
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, - high_to_save)));
#else
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, low_to_save)));
#endif
!
if (save_mode == BLKmode)
{
save_area = assign_stack_temp (BLKmode, num_to_save, 0);
***************
*** 3334,3348 ****
if (save_area)
{
enum machine_mode save_mode = GET_MODE (save_area);
! rtx stack_area
! = gen_rtx_MEM (save_mode,
! memory_address (save_mode,
#ifdef ARGS_GROW_DOWNWARD
! plus_constant (argblock, - high_to_save)
#else
! plus_constant (argblock, low_to_save)
#endif
! ));
if (save_mode != BLKmode)
emit_move_insn (stack_area, save_area);
else
--- 3324,3338 ----
if (save_area)
{
enum machine_mode save_mode = GET_MODE (save_area);
! rtx stack_area =
#ifdef ARGS_GROW_DOWNWARD
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, - high_to_save)));
#else
! gen_rtx_MEM (save_mode, memory_address (save_mode,
! plus_constant (argblock, low_to_save)));
#endif
!
if (save_mode != BLKmode)
emit_move_insn (stack_area, save_area);
else
--
Kaveh R. Ghazi Project Manager / Custom Development
ghazi@caip.rutgers.edu ICon CMT Corp.