This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: egcs-20000530, Next 3.3; Bad generated insn-emit.c
- To: James dot W dot McKelvey at jpl dot nasa dot gov, gcc-bugs at gcc dot gnu dot org
- Subject: Re: egcs-20000530, Next 3.3; Bad generated insn-emit.c
- From: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Date: Mon, 5 Jun 2000 13:42:56 -0400 (EDT)
- Cc: gcc-patches at gcc dot gnu dot org
> 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) \