1750a-protos.h: New file.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Thu, 13 Jan 2000 18:04:22 +0000 (18:04 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Thu, 13 Jan 2000 18:04:22 +0000 (18:04 +0000)
* 1750a-protos.h: New file.

* 1750a.c: Include tm_p.h.  Add static prototypes.  Fix compile
time warnings.

* 1750a.h: Move prototypes to 1750a-protos.h.  Fix compile time
warnings.

* 1750a.md: Likewise.

From-SVN: r31394

gcc/ChangeLog
gcc/config/1750a/1750a-protos.h [new file with mode: 0644]
gcc/config/1750a/1750a.c
gcc/config/1750a/1750a.h
gcc/config/1750a/1750a.md

index cb6ffe8201bd8ac09ab65cbda62972bdb40d2513..ab29a6f0a73aaf3939036d90329df4bab2b20bd8 100644 (file)
@@ -1,3 +1,15 @@
+2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * 1750a-protos.h: New file.
+
+       * 1750a.c: Include tm_p.h.  Add static prototypes.  Fix compile
+       time warnings.
+       
+       * 1750a.h: Move prototypes to 1750a-protos.h.  Fix compile time
+       warnings.
+       
+       * 1750a.md: Likewise.
+
 2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * a29k-protos.h: New file.
diff --git a/gcc/config/1750a/1750a-protos.h b/gcc/config/1750a/1750a-protos.h
new file mode 100644 (file)
index 0000000..604f97f
--- /dev/null
@@ -0,0 +1,45 @@
+/* Definitions of target machine for GNU compiler.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   Contributed by O.M.Kellogg, DASA (oliver.kellogg@space.otn.dasa.de)
+
+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 1, 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
+#ifdef TREE_CODE
+extern struct rtx_def *function_arg PARAMS ((int, enum machine_mode, tree, int));
+#endif /* TREE_CODE */
+extern const char *movcnt_regno_adjust PARAMS ((rtx *));
+extern const char *mod_regno_adjust PARAMS ((const char *, rtx *));
+extern void notice_update_cc PARAMS ((rtx));
+extern double get_double PARAMS ((rtx));
+extern int memop_valid PARAMS ((rtx));
+extern int mov_memory_operand PARAMS ((rtx, enum machine_mode));
+extern int small_nonneg_const PARAMS ((rtx, enum machine_mode));
+extern int zero_operand PARAMS ((rtx, enum machine_mode));
+extern int b_mode_operand PARAMS ((rtx));
+extern int unsigned_comparison_operator PARAMS ((rtx));
+extern int next_cc_user_is_unsigned PARAMS ((rtx));
+extern void print_operand PARAMS ((FILE *, rtx, int));
+extern void print_operand_address PARAMS ((FILE *, rtx));
+#endif /* RTX_CODE */
+
+extern char *float_label PARAMS ((int, double));
+extern const char *branch_or_jump PARAMS ((const char *, int));
+extern int find_jmplbl PARAMS ((int));
+extern int one_bit_set_p PARAMS ((int));
+extern void check_section PARAMS ((enum section));
index 631d8df8e1da98c47812257bdca1b55bec582620..27e0444e5a0a72ca48c3ef92bf7884e21cb95859 100644 (file)
@@ -1,5 +1,5 @@
 /* Subroutines for insn-output.c for MIL-STD-1750.
-   Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1994, 95-99, 2000 Free Software Foundation, Inc.
    Contributed by O.M.Kellogg, DASA (kellogg@space.otn.dasa.de)
 
 This file is part of GNU CC.
@@ -30,6 +30,8 @@ Boston, MA 02111-1307, USA.  */
 #include "conditions.h"
 #include "real.h"
 #include "regs.h"
+#include "output.h"
+#include "tm_p.h"
 
 struct datalabel_array datalbl[DATALBL_ARRSIZ];
 int datalbl_ndx = -1;
@@ -37,10 +39,12 @@ struct jumplabel_array jmplbl[JMPLBL_ARRSIZ];
 int jmplbl_ndx = -1;
 int label_pending = 0, program_counter = 0;
 enum section current_section = Normal;
-char *sectname[4] =
+const char *const sectname[4] =
 {"Init", "Normal", "Konst", "Static"};
 
-int
+static int which_bit PARAMS ((int));
+
+void
 notice_update_cc (exp)
      rtx exp;
 {
@@ -106,7 +110,7 @@ function_arg (cum, mode, type, named)
      int cum;
      enum machine_mode mode;
      tree type;
-     int named;
+     int named ATTRIBUTE_UNUSED;
 {
   int size;
 
@@ -141,16 +145,15 @@ get_double (x)
 
 char *
 float_label (code, value)
-     char code;
+     int code;
      double value;
 {
-  int i = 1;
   static char label[32];
   char *p;
 
   label[0] = code;
   p = label + 1;
-  sprintf (p, "%lf", value);
+  sprintf (p, "%f", value);
   while (*p)
     {
       *p = (*p == '+') ? 'p' :
@@ -161,7 +164,7 @@ float_label (code, value)
 }
 
 
-char *
+const char *
 movcnt_regno_adjust (op)
      rtx *op;
 {
@@ -192,13 +195,13 @@ movcnt_regno_adjust (op)
   return outstr;
 }
 
-char *
+const char *
 mod_regno_adjust (instr, op)
-     char *instr;
+     const char *instr;
      rtx *op;
 {
   static char outstr[40];
-  char *r = (!strncmp (instr, "dvr", 3) ? "r" : "");
+  const char *r = (!strncmp (instr, "dvr", 3) ? "r" : "");
   int modregno_gcc = REGNO (op[3]), modregno_1750 = REGNO (op[0]) + 1;
 
   if (modregno_gcc == modregno_1750
@@ -263,7 +266,7 @@ memop_valid (op)
 int
 mov_memory_operand (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   return (GET_CODE (op) == MEM && GET_CODE (XEXP (op, 0)) == REG);
 }
@@ -272,7 +275,7 @@ mov_memory_operand (op, mode)
 int
 small_nonneg_const (op, mode)
      rtx op;
-     enum machine_mode mode;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   if (GET_CODE (op) == CONST_INT && INTVAL (op) >= 0 && INTVAL (op) <= 15)
     return 1;
@@ -337,9 +340,9 @@ find_jmplbl (labelnum)
   return -1;
 }
 
-char *
+const char *
 branch_or_jump (condition, targetlabel_number)
-     char *condition;
+     const char *condition;
      int targetlabel_number;
 {
   static char buf[30];
@@ -422,6 +425,7 @@ static int addr_inc;
    'w' for int - 16
 */
 
+void
 print_operand (file, x, letter)
      FILE *file;
      rtx x;
@@ -474,7 +478,7 @@ print_operand (file, x, letter)
 /*    {
        double value = get_double (x);
        char fltstr[32];
-       sprintf (fltstr, "%lf", value);
+       sprintf (fltstr, "%f", value);
 
        if (letter == 'D' || letter == 'E')
          {
@@ -508,7 +512,7 @@ print_operand (file, x, letter)
            if (!found)
              {
                fprintf (stderr,
-                  "float value %lfnot found upon label reference\n", value);
+                  "float value %not found upon label reference\n", value);
                strcpy (datalbl[i = ++datalbl_ndx].value, fltstr);
                datalbl[i].name = float_label (letter, value);
                datalbl[i].size = (letter == 'G') ? 3 : 2;
@@ -523,20 +527,20 @@ print_operand (file, x, letter)
          fprintf (file, " %s  ;P_O cst_dbl ", fltstr);
       }
  */
-      fprintf (file, "%lf", get_double (x));
+      fprintf (file, "%f", get_double (x));
       break;
 
     case CONST_INT:
       if (letter == 'J')
-       fprintf (file, "%d", -INTVAL (x));
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, -INTVAL (x));
       else if (letter == 'b')
         fprintf (file, "%d", which_bit (INTVAL (x)));
       else if (letter == 'B')
         fprintf (file, "%d", which_bit (~INTVAL (x)));
       else if (letter == 'w')
-       fprintf (file, "%d", INTVAL (x) - 16);
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) - 16);
       else
-       fprintf (file, "%d", INTVAL (x));
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
       break;
 
     case CODE_LABEL:
@@ -544,8 +548,10 @@ print_operand (file, x, letter)
       break;
 
     case CALL:
-      fprintf (file, "CALL nargs=%d, func is either '%s' or '%s'",
-       XEXP (x, 1), XSTR (XEXP (XEXP (x, 0), 1), 0), XSTR (XEXP (x, 0), 1));
+      fprintf (file, "CALL nargs=");
+      fprintf (file, HOST_PTR_PRINTF, XEXP (x, 1));
+      fprintf (file, ", func is either '%s' or '%s'",
+              XSTR (XEXP (XEXP (x, 0), 1), 0), XSTR (XEXP (x, 0), 1));
       break;
 
     case PLUS:
@@ -586,6 +592,7 @@ print_operand (file, x, letter)
   addr_inc = 0;
 }
 
+void
 print_operand_address (file, addr)
      FILE *file;
      rtx addr;
@@ -716,7 +723,7 @@ one_bit_set_p (x)
  * Return the number of the least significant bit set, using the  same
  * convention for bit numbering as in the MIL-STD-1750 sb instruction.
  */
-int
+static int
 which_bit (x)
      int x;
 {
index 1c61ab5d69db50117d669a5795e8d00547f7077a..882bd68c2c13de673b42c54002ae6d5e2af46184 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions of target machine for GNU compiler.
-   Copyright (C) 1994, 95-98, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1994, 95-99, 2000 Free Software Foundation, Inc.
    Contributed by O.M.Kellogg, DASA (oliver.kellogg@space.otn.dasa.de)
 
 This file is part of GNU CC.
@@ -65,12 +65,7 @@ extern struct datalabel_array datalbl[];
 extern struct jumplabel_array jmplbl[];
 extern int datalbl_ndx, jmplbl_ndx, label_pending, program_counter;
 extern enum section current_section;
-extern char *sectname[4];
-extern char *float_label();
-extern struct rtx_def *function_arg ();
-extern char *movcnt_regno_adjust ();
-extern char *mod_regno_adjust ();
-extern char *branch_or_jump ();
+extern const char *const sectname[4];
 #endif
 /*--------------------------------------------------------------------*/
 
@@ -329,7 +324,7 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
    1750 "index" (remember, in the *GCC* sense!) regs are R12 through R15. 
    The only 1750 register not usable as BASE_REG is R0. */
 
-#define REG_CLASS_CONTENTS  {0, 0x0004, 0x0003, 0xf000, 0xfffe, 0xffff}
+#define REG_CLASS_CONTENTS  { {0}, {0x0004}, {0x0003}, {0xf000}, {0xfffe}, {0xffff} }
 
 /* The same information, inverted:
    Return the class number of the smallest class containing
@@ -725,11 +720,11 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
    */
 
 #define REGNO_OK_FOR_BASE_P(REGNO)  \
- ((REGNO) > 0 && (REGNO) <= 15 ||   \
-  reg_renumber[REGNO] > 0 && reg_renumber[REGNO] <= 15)
+ (((REGNO) > 0 && (REGNO) <= 15) ||   \
+  (reg_renumber[REGNO] > 0 && reg_renumber[REGNO] <= 15))
 #define REGNO_OK_FOR_INDEX_P(REGNO) \
- ((REGNO) >= 12 && (REGNO) <= 15 || \
-  reg_renumber[REGNO] >= 12 && reg_renumber[REGNO] <= 15)
+ (((REGNO) >= 12 && (REGNO) <= 15) || \
+  (reg_renumber[REGNO] >= 12 && reg_renumber[REGNO] <= 15))
 
 /* Now macros that check whether X is a register and also,
    strictly, whether it is in a specified class.  */
@@ -945,7 +940,7 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
    else                                                                        \
        p = main_input_filename;                                        \
    strcpy(name,p);                                                     \
-   if (p = (char *)strchr(name,'.'))                                   \
+   if ((p = (char *)strchr(name,'.')))                                 \
        *p = '\0';                                                      \
    fprintf(FILE,"\tname %s\n",name);                                   \
    fprintf(FILE,"\tnolist\n\tinclude \"ms1750.inc\"\n\tlist\n\n");     \
@@ -1002,7 +997,7 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
        fprintf(asm_out_file,"\tkonst\n");                      \
        current_section = Konst;                                \
     }                                                          \
-    check_section(sect)                                                \
+    void check_section(sect)                                   \
         enum section sect;                                     \
     {                                                          \
         if (current_section != sect) {                         \
@@ -1164,10 +1159,10 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
   do {                                                         \
       if (label_pending) {                                     \
         label_pending = 0;                                     \
-         sprintf (datalbl[datalbl_ndx].value, "%lf", (double) VALUE); \
+         sprintf (datalbl[datalbl_ndx].value, "%f", (double) VALUE); \
       }                                                                \
       datalbl[datalbl_ndx].size += 2;                          \
-      fprintf (FILE, "\tdataf\t%lf\n",VALUE);                  \
+      fprintf (FILE, "\tdataf\t%f\n",VALUE);                   \
   } while(0)
 
 /* This is how to output an assembler line defining a 1750A `double'
@@ -1177,10 +1172,10 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
   do {                                                         \
       if (label_pending) {                                     \
         label_pending = 0;                                     \
-         sprintf (datalbl[datalbl_ndx].value, "%lf", VALUE);   \
+         sprintf (datalbl[datalbl_ndx].value, "%f", VALUE);    \
       }                                                                \
       datalbl[datalbl_ndx].size += 3;                          \
-      fprintf(FILE,"\tdataef\t%lf\n",VALUE);                   \
+      fprintf(FILE,"\tdataef\t%f\n",VALUE);                    \
   } while (0)
 
 /* This is how to output an assembler line defining a string constant.  */
@@ -1250,13 +1245,13 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
    It need not be very fast code.  */
 
 #define ASM_OUTPUT_REG_PUSH(FILE,REGNO)  \
-  fprintf (FILE, "\tPSHM R%s,R%s\n", reg_names[REGNO])
+  fprintf (FILE, "\tPSHM R%s,R%s\n", reg_names[REGNO], "FIXME: missing arg")
 
 /* This is how to output an insn to pop a register from the stack.
    It need not be very fast code.  */
 
 #define ASM_OUTPUT_REG_POP(FILE,REGNO)  \
-       fprintf (FILE, "\tPOPM R%s,R%s\n", reg_names[REGNO])
+       fprintf (FILE, "\tPOPM R%s,R%s\n", reg_names[REGNO], "FIXME: missing arg")
 
 /* This is how to output an element of a case-vector that is absolute. */
 
index f53b77afb06f944a6f29b8bfa5c392a70ccb8ac7..358253f760cf68c0f6b6a85dc5a0e9937719ea6b 100644 (file)
@@ -1,6 +1,6 @@
 ;;- Machine description for GNU compiler
 ;;- MIL-STD-1750A version.
-;; Copyright (C) 1994, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 95-99, 2000 Free Software Foundation, Inc.
 ;; Contributed by O.M.Kellogg, DASA (oliver.kellogg@space.otn.dasa.de).
 
 ;; This file is part of GNU CC.
           return \"ucr.m %0,%1\";
         case 4:
           return \"uc.m %0,%1\";
+        default:
+          abort();
         }
      else
        switch (which_alternative)
           return \"cr   r%0,r%1\";
         case 4:
           return \"c    r%0,%1\";
+        default:
+          abort();
         }
    } ")
 
           return \"incm %2,%0\";
         case 6:
           return \"decm %J2,%0\";
+       default:
+         abort();
       } ")
 
 ;; double integer
         return \"m   r%0,%2\";
       case 2:
         return \"mim r%0,%2\";
+      default:
+        abort();
       }
   ")