]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gencodes.c (output_predicate_decls): New function.
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 3 Jan 2001 21:13:29 +0000 (21:13 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Wed, 3 Jan 2001 21:13:29 +0000 (21:13 +0000)
* gencodes.c (output_predicate_decls): New function.
(main): Call it.
* machmode.h (GET_MODE_MASK): Arrange for it to be defined
even if it is not the first time machmode.h is #included.
* config/sh/sh.c (fpul_operand): Declare MODE argument.
* tm.texi (PREDICATE_CODES): Document predicate declarations.
* gcc.texi (Copyright): Added 2001.

From-SVN: r38673

gcc/ChangeLog
gcc/config/sh/sh.c
gcc/gcc.texi
gcc/gencodes.c
gcc/machmode.h
gcc/tm.texi

index fa8e677d7b8f592565536b75630e4a7e95809e03..7c91711fa5861e831a606c99cc73fd3981ab56f0 100644 (file)
@@ -1,3 +1,13 @@
+2001-01-03  Alexandre Oliva  <aoliva@redhat.com>
+
+       * gencodes.c (output_predicate_decls): New function.
+       (main): Call it.
+       * machmode.h (GET_MODE_MASK): Arrange for it to be defined
+       even if it is not the first time machmode.h is #included.
+       * config/sh/sh.c (fpul_operand): Declare MODE argument.
+       * tm.texi (PREDICATE_CODES): Document predicate declarations.
+       * gcc.texi (Copyright): Added 2001.
+
 2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * c-common.c (c_common_lang_init): New function.  Warn if format
index ee64d78b5ca060e15b737227cb080016a111b799..ec88c59a6fa3ce0c870af9ed92b851eda6506ac9 100644 (file)
@@ -1,5 +1,5 @@
 /* Output routines for GCC for Hitachi Super-H.
-   Copyright (C) 1993, 1994, 1995, 1997, 1997, 1998, 1999, 2000
+   Copyright (C) 1993, 1994, 1995, 1997, 1997, 1998, 1999, 2000, 2001
    Free Software Foundation, Inc.
    Contributed by Steve Chamberlain (sac@cygnus.com).
    Improved by Jim Wilson (wilson@cygnus.com). 
@@ -4793,6 +4793,7 @@ fpscr_operand (op, mode)
 int
 fpul_operand (op, mode)
      rtx op;
+     enum machine_mode mode;
 {
   return (GET_CODE (op) == REG
          && (REGNO (op) == FPUL_REG || REGNO (op) >= FIRST_PSEUDO_REGISTER)
index 3cf16f624cf896c6b9df7ea5b0d455aa9bf26ad9..7348cd7cf3f9a53b03032b38db5cc3f414b8e73f 100644 (file)
@@ -100,7 +100,8 @@ Published by the Free Software Foundation@*
 59 Temple Place - Suite 330@*
 Boston, MA 02111-1307 USA
 @sp 1
-Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+1999, 2000, 2001 Free Software Foundation, Inc.
 @sp 1
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
index ab96d9625cff5c423dc7d9ab0d942066a2b8b725..2df6f302497296dfc534e5c07471f809839ec086 100644 (file)
@@ -2,7 +2,7 @@
    - some macros CODE_FOR_... giving the insn_code_number value
    for each of the defined standard insn names.
    Copyright (C) 1987, 1991, 1995, 1998,
-   1999, 2000 Free Software Foundation, Inc.
+   1999, 2000, 2001 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -32,6 +32,7 @@ Boston, MA 02111-1307, USA.  */
 static int insn_code_number;
 
 static void gen_insn PARAMS ((rtx));
+static void output_predicate_decls PARAMS ((void));
 static int print_md_constant PARAMS ((void **, void *));
 
 static void
@@ -46,6 +47,30 @@ gen_insn (insn)
            insn_code_number);
 }
 
+/* Print out declarations for all predicates mentioned in
+   PREDICATE_CODES.  */
+
+static void
+output_predicate_decls ()
+{
+#ifdef PREDICATE_CODES
+  static struct {
+    const char *name;
+    RTX_CODE codes[NUM_RTX_CODE];
+  } *p, predicate[] = {
+    PREDICATE_CODES
+    {NULL, {}}
+  };
+  
+  putc ('\n', stdout);
+  puts ("struct rtx_def;\n#include \"machmode.h\"\n");
+  for (p = predicate; p->name; p++)
+    printf ("extern int %s PARAMS ((struct rtx_def *, enum machine_mode));\n",
+           p->name);
+  putc ('\n', stdout);
+#endif
+}
+
 extern int main PARAMS ((int, char **));
 
 int
@@ -91,6 +116,8 @@ from the machine description file `md'.  */\n\n");
 
   traverse_md_constants (print_md_constant, stdout);
 
+  output_predicate_decls ();
+
   printf ("\n#endif /* MAX_INSN_CODE */\n");
 
   fflush (stdout);
index e565cb70d21b90271737c80cf02b150657d0fee5..230d8b0596a97474da0737bf1673808d00708a3d 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine mode definitions for GNU C-Compiler; included by rtl.h and tree.h.
-   Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000
+   Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000, 2001
    Free Software Foundation, Inc.
 
 This file is part of GNU CC.
@@ -96,7 +96,9 @@ extern const unsigned int mode_unit_size[];
 extern const unsigned int mode_bitsize[];
 #define GET_MODE_BITSIZE(MODE)  (mode_bitsize[(int) (MODE)])
 
-#ifdef HOST_WIDE_INT
+#endif /* not HAVE_MACHINE_MODES */
+
+#if defined HOST_WIDE_INT && ! defined GET_MODE_MASK
 
 /* Get a bitmask containing 1 for all bits in a word
    that fit within mode MODE.  */
@@ -105,7 +107,10 @@ extern const unsigned HOST_WIDE_INT mode_mask_array[];
 
 #define GET_MODE_MASK(MODE) mode_mask_array[(int) (MODE)]
 
-#endif /* HOST_WIDE_INT */
+#endif /* defined (HOST_WIDE_INT) && ! defined GET_MODE_MASK */
+
+#if ! defined GET_MODE_WIDER_MODE || ! defined GET_MODE_ALIGNMENT \
+    || ! defined GET_CLASS_NARROWEST_MODE
 
 /* Get the next wider natural mode (eg, QI -> HI -> SI -> DI -> TI).  */
 
@@ -153,4 +158,5 @@ extern enum machine_mode byte_mode;
 extern enum machine_mode word_mode;
 extern enum machine_mode ptr_mode;
 
-#endif /* not HAVE_MACHINE_MODES */
+#endif /* ! defined GET_MODE_WIDER_MODE || ! defined GET_MODE_ALIGNMENT
+         || ! defined GET_CLASS_NARROWEST_MODE */
index 41f7fd72d6cdcce0fde6be2daf827f290784d386..59b03eacb5b6bd44523e80e13f658acca360597e 100644 (file)
@@ -7576,6 +7576,9 @@ thus speeding up the compiler.  The most important predicates to include
 in the list specified by this macro are those used in the most insn
 patterns.
 
+For each predicate function named in @var{PREDICATE_CODES}, a
+declaration will be generated in @file{insn-codes.h}.
+
 @item SPECIAL_MODE_PREDICATES
 @findex SPECIAL_MODE_PREDICATES
 Define this if you have special predicates that know special things