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]

egcs-980115 bootstrap fails in calls.c, patch included


	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.


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