This is the mail archive of the gcc-bugs@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]

Re: egcs-20000530, Next 3.3; Bad generated insn-emit.c


 > From: Jim McKelvey <James.W.McKelvey@jpl.nasa.gov>
 > 
 > egcs-20000530
 > Next Cube running NextSTEP 4.2, 3.3 Developer
 > 
 > insn-emit.c:4075: too many arguments to function `gen_call'
 > 
 > In function gen_untyped_call:
 >    emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx));
 > 
 > But gen_call is declared with only two arguments.
 > James.W.McKelvey@jpl.nasa.gov

I wasn't sure what your target triplet was so I assumed
m68k-next-nextstep4.2.  By building a cross compiler from x86-linux, I
was able to reproduce and fix this problem (assuming the target I
chose matches yours.)

The fix is to simply invoke the GEN_CALL macro instead of gen_call.
While in there I took the opportunity to fix a few warnings.

James, let me know if this patch allows you to compile gcc on your
next box.

Assuming it does, okay to install?

		--Kaveh


2000-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m68k.c (legitimize_pic_address): Move prototype ...
	
	* m68k-protos.h (legitimize_pic_address): ... here.

	* m68k.md (legitimize_pic_address): Delete prototypes.
	(untyped_call): Invoke GEN_CALL(), not gen_call().

	* nextstep.c: Include system.h and toplev.h.
	(get_directive_line): Don't prototype.
	(handle_pragma): Mark parameters with ATTRIBUTE_UNUSED and constify.

	* nextstep.h (handle_pragma): Prototype.
	(SECTION_FUNCTION): Prototype FUNCTION().  Move prototype of
	objc_section_init ...
	(EXTRA_SECTION_FUNCTIONS): ... here.

diff -rup orig/egcs-CVS20000604/gcc/config/m68k/m68k-protos.h egcs-CVS20000604/gcc/config/m68k/m68k-protos.h
--- orig/egcs-CVS20000604/gcc/config/m68k/m68k-protos.h	Wed Apr  5 14:18:53 2000
+++ egcs-CVS20000604/gcc/config/m68k/m68k-protos.h	Mon Jun  5 13:12:30 2000
@@ -61,6 +61,7 @@ extern int general_src_operand PARAMS ((
 extern int nonimmediate_src_operand PARAMS ((rtx, enum machine_mode));
 extern int memory_src_operand PARAMS ((rtx, enum machine_mode));
 extern int pcrel_address PARAMS ((rtx, enum machine_mode));
+extern rtx legitimize_pic_address PARAMS ((rtx, enum machine_mode, rtx));
 #endif /* RTX_CODE */
 
 extern int flags_in_68881 PARAMS ((void));
diff -rup orig/egcs-CVS20000604/gcc/config/m68k/m68k.c egcs-CVS20000604/gcc/config/m68k/m68k.c
--- orig/egcs-CVS20000604/gcc/config/m68k/m68k.c	Sat Feb 26 19:05:11 2000
+++ egcs-CVS20000604/gcc/config/m68k/m68k.c	Mon Jun  5 13:12:25 2000
@@ -54,7 +54,6 @@ enum reg_class regno_reg_class[]
 int switch_table_difference_label_flag;
 
 static rtx find_addr_reg PARAMS ((rtx));
-rtx legitimize_pic_address PARAMS ((rtx, enum machine_mode, rtx));
 static const char *singlemove_string PARAMS ((rtx *));
 
 
diff -rup orig/egcs-CVS20000604/gcc/config/m68k/m68k.md egcs-CVS20000604/gcc/config/m68k/m68k.md
--- orig/egcs-CVS20000604/gcc/config/m68k/m68k.md	Sat Feb 26 19:05:12 2000
+++ egcs-CVS20000604/gcc/config/m68k/m68k.md	Mon Jun  5 13:13:36 2000
@@ -509,7 +509,6 @@
          Call legitimize_pic_address with the source, mode, and a relocation
          register (a new pseudo, or the final destination if reload_in_progress
          is set).   Then fall through normally */
-      extern rtx legitimize_pic_address();
       rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode);
       operands[1] = legitimize_pic_address (operands[1], SImode, temp);
     }
@@ -955,7 +954,6 @@
          Call legitimize_pic_address with the source, mode, and a relocation
          register (a new pseudo, or the final destination if reload_in_progress
          is set).   Then fall through normally */
-      extern rtx legitimize_pic_address();
       rtx temp = reload_in_progress ? operands[0] : gen_reg_rtx (Pmode);
       operands[1] = legitimize_pic_address (operands[1], SImode, temp);
     }
@@ -6940,7 +6938,7 @@
 {
   int i;
 
-  emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx));
+  emit_call_insn (GEN_CALL (operands[0], const0_rtx, NULL, const0_rtx));
 
   for (i = 0; i < XVECLEN (operands[2], 0); i++)
     {
diff -rup orig/egcs-CVS20000604/gcc/config/nextstep.c egcs-CVS20000604/gcc/config/nextstep.c
--- orig/egcs-CVS20000604/gcc/config/nextstep.c	Sat Feb 26 19:04:48 2000
+++ egcs-CVS20000604/gcc/config/nextstep.c	Mon Jun  5 13:22:09 2000
@@ -20,9 +20,10 @@ the Free Software Foundation, 59 Temple 
 Boston, MA 02111-1307, USA.  */
 
 #include "config.h"
-#include <stdio.h>
+#include "system.h"
 #include "flags.h"
 #include "tree.h"
+#include "toplev.h"
 
 /* Make everything that used to go in the text section really go there.  */
 
@@ -38,8 +39,6 @@ static int pragma_initialized;
 
 static int initial_optimize_flag;
 
-extern char *get_directive_line ();
-
 /* Called from check_newline via the macro HANDLE_PRAGMA.
    FINPUT is the source file input stream.
    CH is the first character after `#pragma'.
@@ -47,9 +46,9 @@ extern char *get_directive_line ();
 
 int
 handle_pragma (p_getc, p_ungetc, pname)
-     int (*  p_getc) PARAMS ((void));
-     void (* p_ungetc) PARAMS ((int));
-     char * pname;
+     int (*  p_getc) PARAMS ((void)) ATTRIBUTE_UNUSED;
+     void (* p_ungetc) PARAMS ((int)) ATTRIBUTE_UNUSED;
+     const char *pname;
 {
   int retval = 0;
 
diff -rup orig/egcs-CVS20000604/gcc/config/nextstep.h egcs-CVS20000604/gcc/config/nextstep.h
--- orig/egcs-CVS20000604/gcc/config/nextstep.h	Sat Feb 26 19:04:49 2000
+++ egcs-CVS20000604/gcc/config/nextstep.h	Mon Jun  5 13:16:47 2000
@@ -259,7 +259,7 @@ Boston, MA 02111-1307, USA.  */
 
 #undef	HANDLE_PRAGMA
 #define HANDLE_PRAGMA(GETC, UNGETC, NAME) handle_pragma (GETC, UNGETC, NAME)
-extern int handle_pragma ();
+extern int handle_pragma PARAMS ((int(*)(void), void (*)(int), const char *));
 
 /* Give methods pretty symbol names on NeXT. */
 
@@ -320,10 +320,10 @@ extern int handle_pragma ();
 
 #undef	SECTION_FUNCTION
 #define SECTION_FUNCTION(FUNCTION, SECTION, DIRECTIVE, WAS_TEXT, OBJC)	\
+extern void FUNCTION PARAMS ((void));					\
 void									\
 FUNCTION ()								\
 {									\
-  extern void objc_section_init ();					\
   extern int flag_no_mach_text_sections;				\
   									\
   if (WAS_TEXT && flag_no_mach_text_sections)       			\
@@ -353,6 +353,7 @@ FUNCTION ()								\
 
 #undef	EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS			\
+extern void objc_section_init PARAMS ((void));	\
 SECTION_FUNCTION (const_section,		\
 		  in_const,			\
 		  ".const", 1, 0)		\

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