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

PATCH: Add m88k-protos.h file


Tested by building cc1 configured as an i686-pc-linux-gnu to
m88k-tektronix-sysv3 cross compiler.
 
Okay to install?
 
                --Kaveh


2000-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* m88k-protos.h: New file.

	* m88k.c: Include tm_p.h.  Add static prototypes.  Fix compile
	time warnings.
	
	* m88k.h: Move prototypes to m88k-protos.h.  Fix compile time warnings.
	
	* m88k.md: Likewise.

	* tekXD88.h: Likewise.

diff -rup orig/egcs-CVS20000110/gcc/config/m88k/m88k-protos.h egcs-CVS20000110/gcc/config/m88k/m88k-protos.h
--- orig/egcs-CVS20000110/gcc/config/m88k/m88k-protos.h	Tue Jan 11 10:42:30 2000
+++ egcs-CVS20000110/gcc/config/m88k/m88k-protos.h	Tue Jan 11 10:41:27 2000
@@ -0,0 +1,108 @@
+/* Definitions of target machine for GNU compiler for
+   Motorola m88100 in an 88open OCS/BCS environment.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   Contributed by Michael Tiemann (tiemann@cygnus.com).
+   Currently maintained by (gcc@dg-rtp.dg.com)
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifdef RTX_CODE
+extern int m88k_debugger_offset PARAMS ((rtx, int));
+extern void emit_bcnd PARAMS ((enum rtx_code, rtx));
+extern void expand_block_move PARAMS ((rtx, rtx, rtx *));
+extern void print_operand PARAMS ((FILE *, rtx, int));
+extern void print_operand_address PARAMS ((FILE *, rtx));
+extern const char *output_load_const_int PARAMS ((enum machine_mode, rtx *));
+extern const char *output_load_const_float PARAMS ((rtx *));
+extern const char *output_load_const_double PARAMS ((rtx *));
+extern const char *output_load_const_dimode PARAMS ((rtx *));
+extern const char *output_and PARAMS ((rtx[]));
+extern const char *output_ior PARAMS ((rtx[]));
+extern const char *output_xor PARAMS ((rtx[]));
+extern const char *output_call PARAMS ((rtx[], rtx));
+
+extern struct rtx_def *emit_test PARAMS ((enum rtx_code, enum machine_mode));
+extern struct rtx_def *legitimize_address PARAMS ((int, rtx, rtx, rtx));
+extern struct rtx_def *legitimize_operand PARAMS ((rtx, enum machine_mode));
+
+extern int pic_address_needs_scratch PARAMS ((rtx));
+extern int symbolic_address_p PARAMS ((rtx));
+extern int condition_value PARAMS ((rtx));
+extern int emit_move_sequence PARAMS ((rtx *, enum machine_mode, rtx));
+extern int mostly_false_jump PARAMS ((rtx, rtx));
+extern int real_power_of_2_operand PARAMS ((rtx, enum machine_mode));
+extern int move_operand PARAMS ((rtx, enum machine_mode));
+extern int call_address_operand PARAMS ((rtx, enum machine_mode));
+extern int reg_or_0_operand PARAMS ((rtx, enum machine_mode));
+extern int arith_operand PARAMS ((rtx, enum machine_mode));
+extern int arith5_operand PARAMS ((rtx, enum machine_mode));
+extern int arith32_operand PARAMS ((rtx, enum machine_mode));
+extern int arith64_operand PARAMS ((rtx, enum machine_mode));
+extern int int5_operand PARAMS ((rtx, enum machine_mode));
+extern int int32_operand PARAMS ((rtx, enum machine_mode));
+extern int add_operand PARAMS ((rtx, enum machine_mode));
+extern int reg_or_bbx_mask_operand PARAMS ((rtx, enum machine_mode));
+extern int real_or_0_operand PARAMS ((rtx, enum machine_mode));
+extern int partial_ccmode_register_operand PARAMS ((rtx, enum machine_mode));
+extern int relop PARAMS ((rtx, enum machine_mode));
+extern int even_relop PARAMS ((rtx, enum machine_mode));
+extern int odd_relop PARAMS ((rtx, enum machine_mode));
+extern int relop_no_unsigned PARAMS ((rtx, enum machine_mode));
+extern int equality_op PARAMS ((rtx, enum machine_mode));
+extern int pc_or_label_ref PARAMS ((rtx, enum machine_mode));
+extern int symbolic_operand PARAMS ((rtx, enum machine_mode));
+#ifdef TREE_CODE
+extern void m88k_va_start PARAMS ((int, tree, rtx));
+#endif /* TREE_CODE */
+#endif /* RTX_CODE */
+
+#ifdef ANSI_PROTOTYPES
+struct m88k_lang_independent_options;
+#endif
+extern void output_file_start PARAMS ((FILE *,
+				       struct m88k_lang_independent_options *,
+				       int,
+				       struct m88k_lang_independent_options *,
+				       int));
+
+extern int null_prologue PARAMS ((void));
+extern int integer_ok_for_set PARAMS ((unsigned));
+extern void m88k_layout_frame PARAMS ((void));
+extern void m88k_expand_prologue PARAMS ((void));
+extern void m88k_begin_prologue PARAMS ((FILE *, int));
+extern void m88k_end_prologue PARAMS ((FILE *));
+extern void m88k_expand_epilogue PARAMS ((void));
+extern void m88k_begin_epilogue PARAMS ((FILE *));
+extern void m88k_end_epilogue PARAMS ((FILE *, int));
+extern void output_function_profiler PARAMS ((FILE *, int, const char *, int));
+extern void output_function_block_profiler PARAMS ((FILE *, int));
+extern void output_block_profiler PARAMS ((FILE *, int));
+extern void output_ascii PARAMS ((FILE *, const char *, int,
+				  const unsigned char *, int));
+extern void output_label PARAMS ((int));
+extern struct rtx_def *m88k_builtin_saveregs PARAMS ((void));
+extern enum m88k_instruction classify_integer PARAMS ((enum machine_mode, int));
+extern int mak_mask_p PARAMS ((int));
+
+#ifdef TREE_CODE
+extern struct rtx_def *m88k_function_arg PARAMS ((CUMULATIVE_ARGS,
+						  enum machine_mode, tree,
+						  int));
+extern struct rtx_def *m88k_va_arg PARAMS ((tree, tree));
+extern tree m88k_build_va_list PARAMS ((void));
+#endif /* TREE_CODE */
diff -rup orig/egcs-CVS20000110/gcc/config/m88k/m88k.c egcs-CVS20000110/gcc/config/m88k/m88k.c
--- orig/egcs-CVS20000110/gcc/config/m88k/m88k.c	Sun Oct 31 20:31:37 1999
+++ egcs-CVS20000110/gcc/config/m88k/m88k.c	Tue Jan 11 10:59:26 2000
@@ -1,5 +1,5 @@
 /* Subroutines for insn-output.c for Motorola 88000.
-   Copyright (C) 1988, 92, 93, 94, 95, 96, 1997, 1998, 1999 Free Software
+   Copyright (C) 1988, 92-99, 2000 Free Software
    Foundation, Inc. 
    Contributed by Michael Tiemann (tiemann@mcc.com)
    Currently maintained by (gcc@dg-rtp.dg.com)
@@ -37,14 +37,17 @@ Boston, MA 02111-1307, USA.  */
 #include "c-tree.h"
 #include "expr.h"
 #include "flags.h"
+#include "recog.h"
+#include "toplev.h"
+#include "tm_p.h"
 
 extern char *version_string;
 extern int flag_traditional;
 extern FILE *asm_out_file;
 
-char *m88k_pound_sign = "";	/* Either # for SVR4 or empty for SVR3 */
-char *m88k_short_data;
-char *m88k_version;
+const char *m88k_pound_sign = ""; /* Either # for SVR4 or empty for SVR3 */
+const char *m88k_short_data;
+const char *m88k_version;
 char m88k_volatile_code;
 
 unsigned m88k_gp_threshold = 0;
@@ -68,8 +71,6 @@ classify_integer (mode, value)
      enum machine_mode mode;
      register int value;
 {
-  register int mask;
-
   if (value == 0)
     return m88k_zero;
   else if (SMALL_INTVAL (value))
@@ -120,12 +121,12 @@ integer_ok_for_set (value)
   return (value && POWER_OF_2_or_0 (mask + 1));
 }
 
-char *
+const char *
 output_load_const_int (mode, operands)
      enum machine_mode mode;
      rtx *operands;
 {
-  static char *patterns[] =
+  static const char *const patterns[] =
     { "or %0,%#r0,0",
       "or %0,%#r0,%1",
       "subu %0,%#r0,%n1",
@@ -145,7 +146,7 @@ output_load_const_int (mode, operands)
 /* These next two routines assume that floating point numbers are represented
    in a manner which is consistent between host and target machines.  */
 
-char *
+const char *
 output_load_const_float (operands)
      rtx *operands;
 {
@@ -156,7 +157,7 @@ output_load_const_float (operands)
   return output_load_const_int (SImode, operands);
 }
 
-char *
+const char *
 output_load_const_double (operands)
      rtx *operands;
 {
@@ -178,7 +179,7 @@ output_load_const_double (operands)
   return output_load_const_int (SImode, operands);
 }
 
-char *
+const char *
 output_load_const_dimode (operands)
      rtx *operands;
 {
@@ -340,7 +341,7 @@ legitimize_address (pic, orig, reg, scra
 	}
       else if (GET_CODE (addr) == CONST)
 	{
-	  rtx base, offset;
+	  rtx base;
 
 	  if (GET_CODE (XEXP (addr, 0)) == PLUS
 	      && XEXP (XEXP (addr, 0), 0) == pic_offset_table_rtx)
@@ -466,17 +467,21 @@ static int max_from_align[] = {0, MOVSTR
 static int all_from_align[] = {0, MOVSTR_QI, MOVSTR_ODD_HI, 0, MOVSTR_ODD_SI,
 			       0, 0, 0, MOVSTR_ODD_DI};
 
-static int best_from_align[3][9] =
-  {0, MOVSTR_QI_LIMIT_88100, MOVSTR_HI_LIMIT_88100, 0, MOVSTR_SI_LIMIT_88100, 
-   0, 0, 0, MOVSTR_DI_LIMIT_88100,
-   0, MOVSTR_QI_LIMIT_88110, MOVSTR_HI_LIMIT_88110, 0, MOVSTR_SI_LIMIT_88110, 
-   0, 0, 0, MOVSTR_DI_LIMIT_88110,  
-   0, MOVSTR_QI_LIMIT_88000, MOVSTR_HI_LIMIT_88000, 0, MOVSTR_SI_LIMIT_88000,
-   0, 0, 0, MOVSTR_DI_LIMIT_88000};
-
-static void block_move_loop ();
-static void block_move_no_loop ();
-static void block_move_sequence ();
+static int best_from_align[3][9] = {
+  {0, MOVSTR_QI_LIMIT_88100, MOVSTR_HI_LIMIT_88100, 0, MOVSTR_SI_LIMIT_88100,
+   0, 0, 0, MOVSTR_DI_LIMIT_88100},
+  {0, MOVSTR_QI_LIMIT_88110, MOVSTR_HI_LIMIT_88110, 0, MOVSTR_SI_LIMIT_88110,
+   0, 0, 0, MOVSTR_DI_LIMIT_88110},
+  {0, MOVSTR_QI_LIMIT_88000, MOVSTR_HI_LIMIT_88000, 0, MOVSTR_SI_LIMIT_88000,
+   0, 0, 0, MOVSTR_DI_LIMIT_88000}
+};
+
+static void block_move_loop PARAMS ((rtx, rtx, rtx, rtx, int, int));
+static void block_move_no_loop PARAMS ((rtx, rtx, rtx, rtx, int, int));
+static void block_move_sequence PARAMS ((rtx, rtx, rtx, rtx, int, int, int));
+static void output_short_branch_defs PARAMS ((FILE *));
+static int output_option PARAMS ((FILE *, const char *, const char *,
+				  const char *, const char *, int, int));
 
 /* Emit code to perform a block move.  Choose the best method.
 
@@ -751,7 +756,7 @@ block_move_sequence (dest, dest_mem, src
 
 /* Emit the code to do an AND operation.  */
 
-char *
+const char *
 output_and (operands)
      rtx operands[];
 {
@@ -777,7 +782,7 @@ output_and (operands)
 
 /* Emit the code to do an inclusive OR operation.  */
 
-char *
+const char *
 output_ior (operands)
      rtx operands[];
 {
@@ -799,7 +804,7 @@ output_ior (operands)
 
 /* Emit the instructions for doing an XOR.  */
 
-char *
+const char *
 output_xor (operands)
      rtx operands[];
 {
@@ -831,7 +836,7 @@ static rtx sb_name = 0;
 static rtx sb_high = 0;
 static rtx sb_low = 0;
 
-char *
+const char *
 output_call (operands, addr)
      rtx operands[];
      rtx addr;
@@ -852,7 +857,7 @@ output_call (operands, addr)
       if (GET_CODE (jump) == JUMP_INSN)
 	{
 	  rtx low, high;
-	  char *last;
+	  const char *last;
 	  rtx dest = XEXP (SET_SRC (PATTERN (jump)), 0);
 	  int delta = 4 * (insn_addresses[INSN_UID (dest)]
 			   - insn_addresses[INSN_UID (seq_insn)]
@@ -1071,6 +1076,8 @@ mostly_false_jump (jump_insn, condition)
       if (XEXP (condition, 1) == const0_rtx)
 	return 0;
       break;
+    default:
+      break;
     }
 
   return 0;
@@ -1082,7 +1089,7 @@ mostly_false_jump (jump_insn, condition)
 int
 real_power_of_2_operand (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   union {
     REAL_VALUE_TYPE d;
@@ -1196,7 +1203,7 @@ move_operand (op, mode)
 int
 call_address_operand (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return (REG_P (op) || symbolic_address_p (op));
 }
@@ -1278,7 +1285,7 @@ arith64_operand (op, mode)
 int
 int5_operand (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return (GET_CODE (op) == CONST_INT && (unsigned) INTVAL (op) < 32);
 }
@@ -1286,7 +1293,7 @@ int5_operand (op, mode)
 int
 int32_operand (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return (GET_CODE (op) == CONST_INT);
 }
@@ -1353,7 +1360,7 @@ real_or_0_operand (op, mode)
 int
 partial_ccmode_register_operand (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return register_operand (op, CCmode) || register_operand (op, CCEVENmode);
 }
@@ -1363,7 +1370,7 @@ partial_ccmode_register_operand (op, mod
 int
 relop (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   switch (GET_CODE (op))
     {
@@ -1386,7 +1393,7 @@ relop (op, mode)
 int
 even_relop (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   switch (GET_CODE (op))
     {
@@ -1404,7 +1411,7 @@ even_relop (op, mode)
 int
 odd_relop (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   switch (GET_CODE (op))
     {
@@ -1425,7 +1432,7 @@ odd_relop (op, mode)
 int
 relop_no_unsigned (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   switch (GET_CODE (op))
     {
@@ -1454,7 +1461,7 @@ relop_no_unsigned (op, mode)
 int
 equality_op (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return (GET_CODE (op) == EQ || GET_CODE (op) == NE);
 }
@@ -1464,32 +1471,40 @@ equality_op (op, mode)
 int
 pc_or_label_ref (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return (GET_CODE (op) == PC || GET_CODE (op) == LABEL_REF);
 }
 
 /* Output to FILE the start of the assembler file.  */
 
-struct options
+/* This definition must match lang_independent_options from toplev.c.  */
+struct m88k_lang_independent_options
 {
-  char *string;
+  const char *string;
   int *variable;
   int on_value;
-  char *description;
+  const char *description;
 };
 
+static void output_options PARAMS ((FILE *,
+				    struct m88k_lang_independent_options *,
+				    int,
+				    struct m88k_lang_independent_options *,
+				    int, int, int, const char *, const char *,
+				    const char *));
+
 static int
 output_option (file, sep, type, name, indent, pos, max)
      FILE *file;
-     char *sep;
-     char *type;
-     char *name;
-     char *indent;
+     const char *sep;
+     const char *type;
+     const char *name;
+     const char *indent;
      int pos;
      int max;
 {
-  if (strlen (sep) + strlen (type) + strlen (name) + pos > max)
+  if ((long)(strlen (sep) + strlen (type) + strlen (name) + pos) > max)
     {
       fprintf (file, indent);
       return fprintf (file, "%s%s", type, name);
@@ -1497,19 +1512,20 @@ output_option (file, sep, type, name, in
   return pos + fprintf (file, "%s%s%s", sep, type, name);
 }
 
-static struct { char *name; int value; } m_options[] = TARGET_SWITCHES;
+static struct { const char *name; int value; } m_options[] = TARGET_SWITCHES;
 
 static void
 output_options (file, f_options, f_len, W_options, W_len,
 		pos, max, sep, indent, term)
      FILE *file;
-     struct options *f_options;
-     struct options *W_options;
+     struct m88k_lang_independent_options *f_options;
+     struct m88k_lang_independent_options *W_options;
      int f_len, W_len;
      int pos;
      int max;
-     char *indent;
-     char *term;
+     const char *sep;
+     const char *indent;
+     const char *term;
 {
   register int j;
 
@@ -1534,7 +1550,7 @@ output_options (file, f_options, f_len, 
       pos = output_option (file, sep, "-W", W_options[j].string,
 			   indent, pos, max);
 
-  for (j = 0; j < sizeof m_options / sizeof m_options[0]; j++)
+  for (j = 0; j < (long) (sizeof m_options / sizeof m_options[0]); j++)
     if (m_options[j].name[0] != '\0'
 	&& m_options[j].value > 0
 	&& ((m_options[j].value & target_flags)
@@ -1552,8 +1568,8 @@ output_options (file, f_options, f_len, 
 void
 output_file_start (file, f_options, f_len, W_options, W_len)
      FILE *file;
-     struct options *f_options;
-     struct options *W_options;
+     struct m88k_lang_independent_options *f_options;
+     struct m88k_lang_independent_options *W_options;
      int f_len, W_len;
 {
   register int pos;
@@ -1595,9 +1611,9 @@ output_file_start (file, f_options, f_le
 void
 output_ascii (file, opcode, max, p, size)
      FILE *file;
-     char *opcode;
+     const char *opcode;
      int max;
-     unsigned char *p;
+     const unsigned char *p;
      int size;
 {
   int i;
@@ -1741,10 +1757,11 @@ output_label (label_number)
   variable space.
   */
 
-static void emit_add ();
-static void preserve_registers ();
-static void emit_ldst ();
-static void output_tdesc ();
+static void emit_add PARAMS ((rtx, rtx, int));
+static void preserve_registers PARAMS ((int, int));
+static void emit_ldst PARAMS ((int, int, enum machine_mode, int));
+static void output_tdesc PARAMS ((FILE *, int));
+static int uses_arg_area_p PARAMS ((void));
 
 static int  nregs;
 static int  nxregs;
@@ -1922,8 +1939,8 @@ uses_arg_area_p ()
 
 void
 m88k_begin_prologue (stream, size)
-     FILE *stream;
-     int size;
+     FILE *stream ATTRIBUTE_UNUSED;
+     int size ATTRIBUTE_UNUSED;
 {
   if (TARGET_OMIT_LEAF_FRAME_POINTER && ! quiet_flag && leaf_function_p ())
     fprintf (stderr, "$");
@@ -2022,7 +2039,7 @@ m88k_begin_epilogue (stream)
 void
 m88k_end_epilogue (stream, size)
      FILE *stream;
-     int size;
+     int size ATTRIBUTE_UNUSED;
 {
   rtx insn = get_last_insn ();
 
@@ -2341,9 +2358,9 @@ output_tdesc (file, offset)
   ASM_GENERATE_INTERNAL_LABEL (buf, OCS_END_PREFIX, m88k_function_number);
   fprintf (file, ",%s%s", buf+1, flag_pic ? "#rel" : "");
 
-  fprintf (file, ",0x%x,0x%x,0x%x,0x%x",
+  fprintf (file, ",0x%x,0x%x,0x%lx,0x%lx",
 	   /* 8:1,17:0x%.3x,1:0,1:%d,5:%d */
-	   (((xmask ? 3 : 1) << (17+1+1+5))
+	   (int)(((xmask ? 3 : 1) << (17+1+1+5))
 	    | (mask << (1+1+5))
 	    | ((!!save_regs[1]) << 5)
 	    | (frame_pointer_needed
@@ -2353,7 +2370,7 @@ output_tdesc (file, offset)
 	   return_address_info,
 	   register_save_offset);
   if (xmask)
-    fprintf (file, ",0x%x%04x", xmask, (0xffff & xregister_save_offset));
+    fprintf (file, ",0x%lx%04lx", xmask, (0xffff & xregister_save_offset));
   fputc ('\n', file);
 
   text_section ();
@@ -2368,7 +2385,7 @@ void
 output_function_profiler (file, labelno, name, savep)
      FILE *file;
      int labelno;
-     char *name;
+     const char *name;
      int savep;
 {
   char label[256];
@@ -2526,7 +2543,7 @@ m88k_function_arg (args_so_far, mode, ty
      CUMULATIVE_ARGS args_so_far;
      enum machine_mode mode;
      tree type;
-     int named;
+     int named ATTRIBUTE_UNUSED;
 {
   int bytes, words;
 
@@ -2655,7 +2672,7 @@ m88k_build_va_list ()
 
 void
 m88k_va_start (stdarg_p, valist, nextarg)
-     int stdarg_p;
+     int stdarg_p ATTRIBUTE_UNUSED;
      tree valist;
      rtx nextarg ATTRIBUTE_UNUSED;
 {
@@ -2840,7 +2857,7 @@ void
 print_operand (file, x, code)
     FILE *file;
     rtx x;
-    char code;
+    int code;
 {
   enum rtx_code xc = (x ? GET_CODE (x) : UNKNOWN);
   register int value = (xc == CONST_INT ? INTVAL (x) : 0);
diff -rup orig/egcs-CVS20000110/gcc/config/m88k/m88k.h egcs-CVS20000110/gcc/config/m88k/m88k.h
--- orig/egcs-CVS20000110/gcc/config/m88k/m88k.h	Tue Nov 30 07:37:22 1999
+++ egcs-CVS20000110/gcc/config/m88k/m88k.h	Tue Jan 11 10:59:37 2000
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler for
    Motorola m88100 in an 88open OCS/BCS environment.
-   Copyright (C) 1988, 92-97, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1988, 92-99, 2000 Free Software Foundation, Inc.
    Contributed by Michael Tiemann (tiemann@cygnus.com).
    Currently maintained by (gcc@dg-rtp.dg.com)
 
@@ -93,9 +93,9 @@ enum processor_type {
 
 /* External variables/functions defined in m88k.c.  */
 
-extern char *m88k_pound_sign;
-extern char *m88k_short_data;
-extern char *m88k_version;
+extern const char *m88k_pound_sign;
+extern const char *m88k_short_data;
+extern const char *m88k_version;
 extern char m88k_volatile_code;
 
 extern unsigned m88k_gp_threshold;
@@ -111,46 +111,6 @@ extern struct rtx_def *m88k_compare_op1;
 
 extern enum processor_type m88k_cpu;
 
-extern int null_prologue ();
-extern int integer_ok_for_set ();
-extern int m88k_debugger_offset ();
-
-
-extern void emit_bcnd ();
-extern void expand_block_move ();
-extern void m88k_layout_frame ();
-extern void m88k_expand_prologue ();
-extern void m88k_begin_prologue ();
-extern void m88k_end_prologue ();
-extern void m88k_expand_epilogue ();
-extern void m88k_begin_epilogue ();
-extern void m88k_end_epilogue ();
-extern void output_function_profiler ();
-extern void output_function_block_profiler ();
-extern void output_block_profiler ();
-extern void output_file_start ();
-extern void output_ascii ();
-extern void output_label ();
-extern void print_operand ();
-extern void print_operand_address ();
-
-extern char *output_load_const_int ();
-extern char *output_load_const_float ();
-extern char *output_load_const_double ();
-extern char *output_load_const_dimode ();
-extern char *output_and ();
-extern char *output_ior ();
-extern char *output_xor ();
-extern char *output_call ();
-
-extern struct rtx_def *emit_test ();
-extern struct rtx_def *legitimize_address ();
-extern struct rtx_def *legitimize_operand ();
-extern struct rtx_def *m88k_function_arg ();
-extern struct rtx_def *m88k_builtin_saveregs ();
-
-extern enum m88k_instruction classify_integer ();
-
 /* external variables defined elsewhere in the compiler */
 
 extern int target_flags;			/* -m compiler switches */
@@ -329,7 +289,7 @@ extern int flag_pic;				/* -fpic */
 									     \
     if (m88k_short_data)						     \
       {									     \
-	char *p = m88k_short_data;					     \
+	const char *p = m88k_short_data;				     \
 	while (*p)							     \
 	  if (*p >= '0' && *p <= '9')					     \
 	    p++;							     \
@@ -1076,17 +1036,14 @@ enum reg_class { NO_REGS, AP_REG, XRF_RE
 /* Define the `__builtin_va_list' type for the ABI.  */
 #define BUILD_VA_LIST_TYPE(VALIST) \
   (VALIST) = m88k_build_va_list ()
-extern union tree_node *m88k_build_va_list ();
 
 /* Implement `va_start' for varargs and stdarg.  */
 #define EXPAND_BUILTIN_VA_START(stdarg, valist, nextarg) \
   m88k_va_start (stdarg, valist, nextarg)
-extern void m88k_va_start ();
 
 /* Implement `va_arg'.  */
 #define EXPAND_BUILTIN_VA_ARG(valist, type) \
   m88k_va_arg (valist, type)
-extern struct rtx_def *m88k_va_arg ();
 
 /* Generate the assembly code for function entry. */
 #define FUNCTION_PROLOGUE(FILE, SIZE) m88k_begin_prologue(FILE, SIZE)
@@ -1858,8 +1815,11 @@ extern struct rtx_def *m88k_va_arg ();
 /* Override svr[34].h.  */
 #undef	ASM_FILE_START
 #define ASM_FILE_START(FILE) \
-  output_file_start (FILE, f_options, sizeof f_options / sizeof f_options[0], \
-		     W_options, sizeof W_options / sizeof W_options[0])
+  output_file_start (FILE, \
+	(struct m88k_lang_independent_options *) f_options, \
+	sizeof f_options / sizeof f_options[0], \
+	(struct m88k_lang_independent_options *) W_options, \
+	sizeof W_options / sizeof W_options[0])
 
 #undef	ASM_FILE_END
 
@@ -1898,7 +1858,7 @@ extern struct rtx_def *m88k_va_arg ();
 #define ASM_OUTPUT_OPCODE(STREAM, PTR)					\
   {									\
     int ch;								\
-    char *orig_ptr;							\
+    const char *orig_ptr;						\
 									\
     for (orig_ptr = (PTR);						\
 	 (ch = *(PTR)) && ch != ' ' && ch != '\t' && ch != '\n' && ch != '%'; \
@@ -1929,7 +1889,7 @@ extern struct rtx_def *m88k_va_arg ();
    is our `condition code' register), so that condition codes can easily
    be clobbered by an asm.  The carry bit in the PSR is now used.  */
 
-#define ADDITIONAL_REGISTER_NAMES	{"psr", 0, "cc", 0}
+#define ADDITIONAL_REGISTER_NAMES	{{"psr", 0}, {"cc", 0}}
 
 /* How to renumber registers for dbx and gdb.  */
 #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
@@ -1985,7 +1945,7 @@ extern struct rtx_def *m88k_va_arg ();
 #undef ASM_FINISH_DECLARE_OBJECT
 #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)	 \
 do {									 \
-     char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);			 \
+     const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);		 \
      if (!flag_inhibit_size_directive && DECL_SIZE (DECL)		 \
 	 && DECLARE_ASM_NAME						 \
          && ! AT_END && TOP_LEVEL					 \
@@ -2117,8 +2077,8 @@ do {									 \
   do {									\
     union { REAL_VALUE_TYPE d; long l[2]; } x;				\
     x.d = (VALUE);							\
-    fprintf (FILE, "\t%s\t 0x%.8x, 0x%.8x\n", INT_ASM_OP,			\
-	     x.l[0], x.l[1]);						\
+    fprintf (FILE, "\t%s\t 0x%.8lx, 0x%.8lx\n", INT_ASM_OP,		\
+	     (long) x.l[0], (long) x.l[1]);				\
   } while (0)
 
 /* This is how to output an assembler line defining a `float' constant.  */
@@ -2317,7 +2277,7 @@ do {									 \
 #define PUT_SDB_SCL(a)						\
   do {								\
     register int s = (a);					\
-    register char *scl;						\
+    register const char *scl;					\
     switch (s)							\
       {								\
       case C_EFCN:	scl = "end of function";	break;	\
@@ -2357,9 +2317,10 @@ do {									 \
   do {								\
     register int t = (a);					\
     static char buffer[100];					\
-    register char *p = buffer, *q;				\
+    register char *p = buffer;					\
+    register const char *q;					\
     register int typ = t;					\
-    register int i,d;						\
+    register int i;						\
 								\
     for (i = 0; i <= 5; i++)					\
       {								\
@@ -2611,6 +2572,7 @@ sdata_section ()							\
 #define ENCODE_SECTION_INFO(DECL)					\
   do {									\
     if (m88k_gp_threshold > 0)						\
+    {									\
       if (TREE_CODE (DECL) == VAR_DECL)					\
 	{								\
 	  if (!TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL))	\
@@ -2625,6 +2587,7 @@ sdata_section ()							\
 	       && flag_writable_strings					\
 	       && TREE_STRING_LENGTH (DECL) <= m88k_gp_threshold)	\
 	SYMBOL_REF_FLAG (XEXP (TREE_CST_RTL (DECL), 0)) = 1;		\
+    }									\
   } while (0)
 
 /* Print operand X (an rtx) in assembler syntax to file FILE.
diff -rup orig/egcs-CVS20000110/gcc/config/m88k/m88k.md egcs-CVS20000110/gcc/config/m88k/m88k.md
--- orig/egcs-CVS20000110/gcc/config/m88k/m88k.md	Fri Oct 15 07:43:20 1999
+++ egcs-CVS20000110/gcc/config/m88k/m88k.md	Tue Jan 11 11:00:20 2000
@@ -1,5 +1,5 @@
 ;;- Machine description for the Motorola 88000 for GNU C compiler
-;;;  Copyright (C) 1988, 92-96, 1998, 1999 Free Software Foundation, Inc.
+;;  Copyright (C) 1988, 92-96, 98, 99, 2000 Free Software Foundation, Inc.
 ;;  Contributed by Michael Tiemann (tiemann@mcc.com)
 ;;  Currently maintained by (gcc@dg-rtp.dg.com)
 
@@ -28,7 +28,7 @@
 (define_expand "m88k_rcs_id"
   [(match_operand:SI 0 "" "")]
   ""
-  "{ static char rcs_id[] = \"$What: <@(#) m88k.md,v	1.1.1.2.2.2> $\";
+  "{ static char rcs_id[] ATTRIBUTE_UNUSED = \"$What: <@(#) m88k.md,v	1.1.1.2.2.2> $\";
      FAIL; }")
 
 ;; Attribute describing the processor.  This attribute must match exactly
@@ -3058,7 +3058,7 @@
   "
 {
   operands[1] = legitimize_operand (operands[1], DFmode);
-  if (real_power_of_2_operand (operands[2]))
+  if (real_power_of_2_operand (operands[2], DFmode))
     {
       union real_extract u;
       bcopy (&CONST_DOUBLE_LOW (operands[2]), &u, sizeof u);
diff -rup orig/egcs-CVS20000110/gcc/config/m88k/tekXD88.h egcs-CVS20000110/gcc/config/m88k/tekXD88.h
--- orig/egcs-CVS20000110/gcc/config/m88k/tekXD88.h	Wed Dec 16 16:08:37 1998
+++ egcs-CVS20000110/gcc/config/m88k/tekXD88.h	Tue Jan 11 09:00:54 2000
@@ -36,8 +36,12 @@
 /* I don't know if this SDB thing is needed or not --KRG */
 
 
-/* Use T_ARG as T_VOID.  T_VOID is not defined in <syms.h> as it should be.  */
+/* Use T_ARG as T_VOID.  T_VOID is not defined in <syms.h> as it
+   should be.  If we're cross compiling, then don't do this because
+   "gsyms.h" has T_VOID.  */
+#ifndef CROSS_COMPILE
 #define T_VOID T_ARG
+#endif
 
 
 /* The bundled ld program needs link editor directives which normally


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