OSDN Git Service

* config/c4x/c4x-protos.h: New file. Prototypes for functions defined
authorm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Nov 1999 22:56:56 +0000 (22:56 +0000)
committerm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Nov 1999 22:56:56 +0000 (22:56 +0000)
in c4x.c.
* config/c4x/c4x.h: Moved prototypes to c4x.h.
* config/c4x/c4x.c (c4x_preferred_reload_class, c4x_limit_reload_class,
c4x_secondary_memory_needed) Delete.
(fp_zero_operand): Add mode argument.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30463 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 9bd5f08..0303d6d 100644 (file)
@@ -1,3 +1,12 @@
+Wed Nov 10 11:47:54 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * config/c4x/c4x-protos.h: New file.  Prototypes for functions defined
+       in c4x.c.
+       * config/c4x/c4x.h: Moved prototypes to c4x.h.
+       * config/c4x/c4x.c (c4x_preferred_reload_class, c4x_limit_reload_class,
+       c4x_secondary_memory_needed) Delete.
+       (fp_zero_operand): Add mode argument.
+
 Thu Nov  4 15:52:35 1999  Andrew Haley  <aph@cygnus.com>
 
        * reload1.c (reload_reg_free_for_value_p): Don't use a register
diff --git a/gcc/config/c4x/c4x-protos.h b/gcc/config/c4x/c4x-protos.h
new file mode 100644 (file)
index 0000000..dd15fe4
--- /dev/null
@@ -0,0 +1,253 @@
+/* Definitions of target machine for GNU compiler.  TMS320C[34]x
+   Copyright (C) 1994-98, 1999 Free Software Foundation, Inc.
+
+   Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
+              and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl).
+
+   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.  */
+
+extern void c4x_override_options PARAMS ((void));
+
+extern void c4x_optimization_options PARAMS ((int, int));
+
+extern void c4x_output_ascii PARAMS ((FILE *, const char *, int));
+
+extern void c4x_function_prologue PARAMS ((FILE *, int));
+
+extern void c4x_function_epilogue PARAMS ((FILE *, int));
+
+extern int c4x_null_epilogue_p PARAMS ((void));
+
+extern int c4x_handle_pragma PARAMS ((int (* p_getc) (void),
+                                     void (* p_ungetc) (int),
+                                     char *));
+
+#ifdef TREE_CODE
+extern void c4x_set_default_attributes PARAMS ((tree, tree *));
+
+extern void c4x_function_arg_advance PARAMS ((CUMULATIVE_ARGS *, 
+                                             enum machine_mode, tree, int));
+
+extern struct rtx_def *c4x_function_arg PARAMS ((CUMULATIVE_ARGS *,
+                                                enum machine_mode, tree,
+                                                int));
+
+extern void c4x_encode_section_info PARAMS ((tree));
+#endif /* TREE_CODE */
+
+
+#if defined(RTX_CODE) && defined(TREE_CODE)
+extern void c4x_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *c, tree, rtx));
+
+extern void c4x_va_start PARAMS ((int, tree, rtx));
+
+extern struct rtx_def *c4x_va_arg PARAMS ((tree, tree));
+#endif /* TREE_CODE and RTX_CODE*/
+
+
+#ifdef RTX_CODE
+extern struct rtx_def *c4x_gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx));
+
+extern int c4x_check_legit_addr PARAMS ((enum machine_mode, rtx, int));
+
+extern struct rtx_def *c4x_legitimize_address PARAMS ((rtx,
+                                                      enum machine_mode));
+
+extern struct rtx_def *c4x_legitimize_reload_address PARAMS ((rtx, enum machine_mode, rtx));
+
+extern int c4x_address_cost PARAMS ((rtx));
+
+extern void c4x_print_operand PARAMS ((FILE *, rtx, int));
+
+extern void c4x_print_operand_address PARAMS ((FILE *, rtx));
+
+extern enum reg_class c4x_preferred_reload_class PARAMS ((rtx,
+                                                         enum reg_class));
+
+extern struct rtx_def *c4x_operand_subword PARAMS ((rtx, int, int,
+                                                  enum machine_mode));
+
+extern char *c4x_output_cbranch PARAMS ((char *, rtx));
+
+extern int c4x_label_conflict PARAMS ((rtx, rtx, rtx));
+
+extern int c4x_address_conflict PARAMS ((rtx, rtx, int, int));
+
+extern int c4x_adjust_cost PARAMS ((rtx, rtx, rtx, int));
+
+extern void c4x_process_after_reload PARAMS ((rtx));
+
+extern int c4x_rptb_nop_p PARAMS ((rtx));
+
+extern int c4x_rptb_rpts_p PARAMS ((rtx, rtx));
+
+extern int c4x_autoinc_operand PARAMS ((rtx, enum machine_mode));
+
+extern int fp_zero_operand PARAMS ((rtx, enum machine_mode));
+
+extern int const_operand PARAMS ((rtx, enum machine_mode));
+
+extern int stik_const_operand PARAMS ((rtx, enum machine_mode));
+
+extern int not_const_operand PARAMS ((rtx, enum machine_mode));
+
+extern int parallel_operand PARAMS ((rtx, enum machine_mode));
+
+extern int reg_or_const_operand PARAMS ((rtx, enum machine_mode));
+
+extern int reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int mixed_subreg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int reg_imm_operand PARAMS ((rtx, enum machine_mode));
+
+extern int r0r1_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int r2r3_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ext_low_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ext_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int std_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int dst_operand PARAMS ((rtx, enum machine_mode));
+
+extern int src_operand PARAMS ((rtx, enum machine_mode));
+
+extern int src_hi_operand PARAMS ((rtx, enum machine_mode));
+
+extern int lsrc_operand PARAMS ((rtx, enum machine_mode));
+
+extern int tsrc_operand PARAMS ((rtx, enum machine_mode));
+
+extern int addr_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int index_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int dp_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int sp_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int rc_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int st_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int symbolic_address_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar0_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar0_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar1_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar1_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar2_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar2_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar3_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar3_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar4_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar4_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar5_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar5_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar6_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar6_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar7_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ar7_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ir0_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ir0_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ir1_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int ir1_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int group1_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int group1_mem_operand PARAMS ((rtx, enum machine_mode));
+
+extern int arx_reg_operand PARAMS ((rtx, enum machine_mode));
+
+extern int call_address_operand PARAMS ((rtx, enum machine_mode));
+
+extern int par_ind_operand PARAMS ((rtx, enum machine_mode));
+
+extern int not_rc_reg PARAMS ((rtx, enum machine_mode));
+
+extern int not_modify_reg PARAMS ((rtx, enum machine_mode));
+
+extern int c4x_shiftable_constant PARAMS ((rtx));
+
+extern int c4x_H_constant PARAMS ((rtx));
+
+extern int c4x_I_constant PARAMS ((rtx));
+
+extern int c4x_J_constant PARAMS ((rtx));
+
+extern int c4x_L_constant PARAMS ((rtx));
+
+extern int c4x_Q_constraint PARAMS ((rtx));
+
+extern int c4x_R_constraint PARAMS ((rtx));
+
+extern int c4x_S_constraint PARAMS ((rtx));
+
+extern int c4x_T_constraint PARAMS ((rtx));
+
+extern int c4x_U_constraint PARAMS ((rtx));
+
+extern void c4x_emit_libcall PARAMS ((const char *, enum rtx_code,
+                                     enum machine_mode,
+                                     enum machine_mode, int, rtx *));
+
+extern void c4x_emit_libcall3 PARAMS ((const char *, enum rtx_code, 
+                                      enum machine_mode, rtx *));
+
+extern void c4x_emit_libcall_mulhi PARAMS ((char *, enum rtx_code,
+                                           enum machine_mode, rtx *));
+
+extern int c4x_emit_move_sequence PARAMS ((rtx *, enum machine_mode));
+
+extern int legitimize_operands PARAMS ((enum rtx_code, rtx *, 
+                                       enum machine_mode));
+
+extern int valid_operands PARAMS ((enum rtx_code, rtx *, enum machine_mode));
+
+extern int valid_parallel_load_store PARAMS ((rtx *, enum machine_mode));
+
+extern int valid_parallel_operands_4 PARAMS ((rtx *, enum machine_mode));
+
+extern int valid_parallel_operands_5 PARAMS ((rtx *, enum machine_mode));
+
+extern int valid_parallel_operands_6 PARAMS ((rtx *, enum machine_mode));
+
+#endif /* RTX_CODE */
+
index dd493c7..1475494 100644 (file)
@@ -44,6 +44,7 @@
 #include "recog.h"
 #include "c-tree.h"
 #include "ggc.h"
+#include "c4x-protos.h"
 
 static int c4x_leaf_function;
 
@@ -192,7 +193,14 @@ c4x_override_options ()
 
   /* -mcpu=xx overrides -m40 etc.  */
   if (c4x_cpu_version_string)
-    c4x_cpu_version = atoi (c4x_cpu_version_string);
+    {
+      const char *p = c4x_cpu_version_string;
+      
+      /* Also allow -mcpu=c30 etc.  */
+      if (*p == 'c' || *p == 'C')
+       p++;
+      c4x_cpu_version = atoi (p);
+    }
 
   target_flags &= ~(C30_FLAG | C31_FLAG | C32_FLAG | C40_FLAG | C44_FLAG);
 
@@ -251,7 +259,7 @@ c4x_optimization_options (level, size)
 void
 c4x_output_ascii (stream, ptr, len)
      FILE *stream;
-     unsigned char *ptr;
+     const char *ptr;
      int len;
 {
   char sbuf[C4X_ASCII_LIMIT + 1];
@@ -1197,7 +1205,7 @@ c4x_emit_move_sequence (operands, mode)
 
 void
 c4x_emit_libcall (name, code, dmode, smode, noperands, operands)
-     char *name;
+     const char *name;
      enum rtx_code code;
      enum machine_mode dmode;
      enum machine_mode smode;
@@ -1276,34 +1284,6 @@ c4x_emit_libcall_mulhi (name, code, mode, operands)
 }
 
 
-enum reg_class
-c4x_preferred_reload_class (x, class)
-     rtx x ATTRIBUTE_UNUSED;
-     enum reg_class class;
-{
-  return class;
-}
-
-
-enum reg_class
-c4x_limit_reload_class (mode, class)
-     enum machine_mode mode ATTRIBUTE_UNUSED;
-     enum reg_class class;
-{
-  return class;
-}
-
-
-enum reg_class
-c4x_secondary_memory_needed (class1, class2, mode)
-     enum reg_class class1 ATTRIBUTE_UNUSED;
-     enum reg_class class2 ATTRIBUTE_UNUSED;
-     enum machine_mode mode ATTRIBUTE_UNUSED;
-{
-  return 0;
-}
-
-
 /* Set the SYMBOL_REF_FLAG for a function decl.  However, wo do not
    yet use this info.  */
 void
@@ -1590,7 +1570,7 @@ c4x_legitimize_reload_address (orig, mode, insn)
 
 int 
 c4x_address_cost (addr)
-rtx addr;
+     rtx addr;
 {
   switch (GET_CODE (addr))
     {
@@ -1657,6 +1637,11 @@ rtx addr;
            return 2;
 
          case CONST_INT:
+           /* The following tries to improve GIV combination
+              in strength reduce but appears not to help.  */
+           if (TARGET_DEVEL && IS_UINT5_CONST (INTVAL (op1)))
+             return 1;
+
            if (IS_DISP1_CONST (INTVAL (op1)))
              return 1;
 
@@ -2722,8 +2707,9 @@ any_operand (op, mode)
 /* Nonzero if OP is a floating point value with value 0.0.  */
 
 int
-fp_zero_operand (op)
+fp_zero_operand (op, mode)
      rtx op;
+     enum machine_mode mode ATTRIBUTE_UNUSED;
 {
   REAL_VALUE_TYPE r;
 
@@ -4211,7 +4197,7 @@ c4x_operand_subword (op, i, validate_address, mode)
 
 int
 c4x_handle_pragma (p_getc, p_ungetc, pname)
-     int (*  p_getc) PROTO ((void));
+     int (* p_getc) PROTO ((void));
      void (* p_ungetc) PROTO ((int)) ATTRIBUTE_UNUSED;
      char *pname;
 {
index 20a5835..09e40bc 100644 (file)
    the Free Software Foundation, 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-/* Set the following so that some of the macros expand to function
-   calls to simplify debugging.  */
-#define C4X_DEBUG 1
-
 /* RUN-TIME TARGET SPECIFICATION */
 
 #define C4x   1
 
 extern int target_flags;
 
-#define TARGET_INLINE          1 /* Inline MPYI */
-#define TARGET_PARALLEL                1 /* Enable parallel insns in MD */
+#define TARGET_INLINE          1 /* Inline MPYI */
+#define TARGET_PARALLEL                1 /* Enable parallel insns in MD */
 #define TARGET_SMALL_REG_CLASS 0
 
 #define TARGET_SMALL           (target_flags & SMALL_MEMORY_FLAG)
@@ -316,11 +312,10 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string;
    defined, is executed once just after all the command options have
    been parsed.  */
 
-extern void c4x_override_options ();
 #define OVERRIDE_OPTIONS c4x_override_options ()
 
 /* Define this to change the optimizations performed by default.  */
-extern void c4x_optimization_options ();
+
 #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) c4x_optimization_options(LEVEL,SIZE)
 
 /* Run Time Target Specification  */
@@ -814,15 +809,11 @@ enum reg_class
 #define REGNO_OK_FOR_INDEX_P(REGNO) \
      (IS_INDEX_REG(REGNO) || IS_INDEX_REG((unsigned)reg_renumber[REGNO]))
 
-extern enum reg_class c4x_preferred_reload_class ();
-#define PREFERRED_RELOAD_CLASS(X, CLASS) c4x_preferred_reload_class(X, CLASS)
+#define PREFERRED_RELOAD_CLASS(X, CLASS) (CLASS)
 
-extern enum reg_class c4x_limit_reload_class ();
-#define LIMIT_RELOAD_CLASS(X, CLASS) c4x_limit_reload_class(X, CLASS)
+#define LIMIT_RELOAD_CLASS(X, CLASS) (CLASS)
 
-extern enum reg_class c4x_secondary_memory_needed ();
-#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE)  \
-c4x_secondary_memory_needed(CLASS1, CLASS2, MODE)
+#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) 0
 
 #define CLASS_MAX_NREGS(CLASS, MODE)                   \
 (((MODE) == CCmode || (MODE) == CC_NOOVmode) ? 1 : ((MODE) == HFmode) ? 1 : \
@@ -866,7 +857,7 @@ c4x_secondary_memory_needed(CLASS1, CLASS2, MODE)
         : 0 )  
 
 #define CONST_DOUBLE_OK_FOR_LETTER_P(OP, C)                            \
-        ( ((C) == 'G') ? (fp_zero_operand (OP))                                \
+        ( ((C) == 'G') ? (fp_zero_operand (OP, QFmode))                        \
        : ((C) == 'H') ? (c4x_H_constant (OP))                          \
        : 0 )
 
@@ -1070,18 +1061,12 @@ typedef struct c4x_args
 }
 CUMULATIVE_ARGS;
 
-extern void c4x_init_cumulative_args();
-
 #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT)      \
   (c4x_init_cumulative_args (&CUM, FNTYPE, LIBNAME))
 
-extern void c4x_function_arg_advance();
-
 #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)   \
   (c4x_function_arg_advance (&CUM, MODE, TYPE, NAMED))
 
-extern struct rtx_def *c4x_function_arg();
-
 #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
   (c4x_function_arg(&CUM, MODE, TYPE, NAMED))
 
@@ -1127,11 +1112,9 @@ extern struct rtx_def *c4x_function_arg();
 
 /* Varargs handling.  */
 
-extern void c4x_va_start ();
 #define        EXPAND_BUILTIN_VA_START(stdarg, valist, nextarg) \
   c4x_va_start (stdarg, valist, nextarg)
 
-extern struct rtx_def *c4x_va_arg ();
 #define EXPAND_BUILTIN_VA_ARG(valist, type) \
   c4x_va_arg (valist, type)
 
@@ -1553,8 +1536,6 @@ extern struct rtx_def *c4x_va_arg ();
     || GET_MODE (Y) == ABS)                                    \
     ? CC_NOOVmode : CCmode)
 
-extern struct rtx_def *c4x_gen_compare_reg ();
-
 /* Addressing Modes  */
 
 #define HAVE_POST_INCREMENT 1
@@ -1593,8 +1574,6 @@ extern struct rtx_def *c4x_gen_compare_reg ();
    After reload, it makes no difference, since pseudo regs have
    been eliminated by then.  */
 
-extern int c4x_check_legit_addr ();
-
 #ifndef REG_OK_STRICT
 
 /* Nonzero if X is a hard or pseudo reg that can be used as an base.  */
@@ -1629,7 +1608,6 @@ extern int c4x_check_legit_addr ();
 
 #endif
 
-extern struct rtx_def *c4x_legitimize_address ();
 #define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) \
 {                                                                      \
   rtx new;                                                             \
@@ -1641,7 +1619,6 @@ extern struct rtx_def *c4x_legitimize_address ();
   }                                                                    \
 }
 
-extern struct rtx_def *c4x_legitimize_reload_address ();
 #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN)     \
 {                                                                      \
   rtx new;                                                             \
@@ -1708,7 +1685,6 @@ extern struct rtx_def *c4x_legitimize_reload_address ();
    On the C4x we use this to indicate if a symbol is in text or
    data space.  */
 
-extern void c4x_encode_section_info ();
 #define ENCODE_SECTION_INFO(DECL) c4x_encode_section_info (DECL);
 
 /* Descripting Relative Cost of Operations  */
@@ -1811,8 +1787,6 @@ extern void c4x_encode_section_info ();
    for valid addresses.  We handle the most common address without 
    a call to c4x_address_cost.  */
 
-extern int c4x_address_cost ();
-
 #define ADDRESS_COST(ADDR) (REG_P (ADDR) ? 1 : c4x_address_cost (ADDR))
 
 #define        CANONICALIZE_COMPARISON(CODE, OP0, OP1)         \
@@ -2130,7 +2104,6 @@ dtors_section ()                                                  \
 #define ASM_OUTPUT_BYTE(FILE, VALUE)  \
   fprintf (FILE, "\t.word\t0%xh\n", (VALUE))
 
-extern void c4x_output_ascii ();
 #define ASM_OUTPUT_ASCII(FILE, PTR, LEN) c4x_output_ascii (FILE, PTR, LEN)
 
 #define ASM_OPEN_PAREN "("
@@ -2286,8 +2259,6 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM)
  "iif",         "rs",  "re",  "rc",  "f8",  "f9", "f10", "f11"         \
 }
 
-
-extern void c4x_print_operand ();
 #define PRINT_OPERAND(FILE, X, CODE) c4x_print_operand(FILE, X, CODE)
 
 /* Determine which codes are valid without a following integer.  These must
@@ -2295,7 +2266,6 @@ extern void c4x_print_operand ();
 
 #define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '#')
 
-extern void c4x_print_operand_address ();
 #define PRINT_OPERAND_ADDRESS(FILE, X) c4x_print_operand_address(FILE, X)
 
 /* Define this macro if you want to implement any pragmas.  If defined, it
@@ -2304,15 +2274,12 @@ extern void c4x_print_operand_address ();
    text can be read.  CH is the first character after the #pragma.  The
    result of the expression is the terminating character found
    (newline or EOF).  */
-extern int c4x_handle_pragma ();
 #define HANDLE_PRAGMA(GETC, UNGETC, NAME) \
   c4x_handle_pragma (GETC, UNGETC, NAME)
 
-extern void c4x_set_default_attributes ();
 #define SET_DEFAULT_DECL_ATTRIBUTES(DECL, ATTRIBUTES) \
   c4x_set_default_attributes (DECL, &ATTRIBUTES)
 
-extern int c4x_valid_type_attribute_p ();
 #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, NAME, ARGS) \
   (c4x_valid_type_attribute_p (TYPE, ATTRIBUTES, NAME, ARGS))
 
@@ -2619,179 +2586,3 @@ extern struct rtx_def *c4x_compare_op1; /* operand 1 for comparisons */
 
 extern int c4x_rpts_cycles;            /* max cycles for RPTS */
 extern int c4x_cpu_version;            /* cpu version C30/31/32/40/44 */
-
-/* Functions in c4x.c */
-
-extern void c4x_function_prologue ();
-
-extern void c4x_function_epilogue ();
-
-extern struct rtx_def *c4x_operand_subword ();
-
-extern struct rtx_def *c4x_adj_offsettable_operand ();
-
-extern char *c4x_output_cbranch ();
-
-extern int c4x_null_epilogue_p ();
-
-extern int c4x_autoinc_operand ();
-
-extern int c4x_label_conflict ();
-
-extern int c4x_address_conflict ();
-
-extern int c4x_adjust_cost ();
-
-extern void c4x_process_after_reload ();
-
-extern void c4x_combine_parallel ();
-
-extern int c4x_rptb_nop_p ();
-
-extern int c4x_rptb_rpts_p ();
-
-extern int fp_zero_operand ();
-
-extern int const_operand ();
-
-extern int stik_const_operand ();
-
-extern int not_const_operand ();
-
-extern int parallel_operand ();
-
-extern int reg_or_const_operand ();
-
-extern int reg_operand ();
-
-extern int mixed_subreg_operand ();
-
-extern int reg_imm_operand ();
-
-extern int r0r1_reg_operand ();
-
-extern int r2r3_reg_operand ();
-
-extern int ext_low_reg_operand ();
-
-extern int ext_reg_operand ();
-
-extern int std_reg_operand ();
-
-extern int dst_operand ();
-
-extern int src_operand ();
-
-extern int src_hi_operand ();
-
-extern int lsrc_operand ();
-
-extern int tsrc_operand ();
-
-extern int addr_reg_operand ();
-
-extern int index_reg_operand ();
-
-extern int dp_reg_operand ();
-
-extern int sp_reg_operand ();
-
-extern int rc_reg_operand ();
-
-extern int st_reg_operand ();
-
-extern int symbolic_address_operand ();
-
-extern int ar0_reg_operand ();
-
-extern int ar0_mem_operand ();
-
-extern int ar1_reg_operand ();
-
-extern int ar1_mem_operand ();
-
-extern int ar2_reg_operand ();
-
-extern int ar2_mem_operand ();
-
-extern int ar3_reg_operand ();
-
-extern int ar3_mem_operand ();
-
-extern int ar4_reg_operand ();
-
-extern int ar4_mem_operand ();
-
-extern int ar5_reg_operand ();
-
-extern int ar5_mem_operand ();
-
-extern int ar6_reg_operand ();
-
-extern int ar6_mem_operand ();
-
-extern int ar7_reg_operand ();
-
-extern int ar7_mem_operand ();
-
-extern int ir0_reg_operand ();
-
-extern int ir0_mem_operand ();
-
-extern int ir1_reg_operand ();
-
-extern int ir1_mem_operand ();
-
-extern int group1_reg_operand ();
-
-extern int group1_mem_operand ();
-
-extern int arx_reg_operand ();
-
-extern int call_address_operand ();
-
-extern int par_ind_operand ();
-
-extern int not_rc_reg ();
-
-extern int not_modify_reg ();
-
-extern int c4x_shiftable_constant ();
-
-extern int c4x_H_constant ();
-
-extern int c4x_I_constant ();
-
-extern int c4x_J_constant ();
-
-extern int c4x_L_constant ();
-
-extern int c4x_Q_constraint ();
-
-extern int c4x_R_constraint ();
-
-extern int c4x_S_constraint ();
-
-extern int c4x_T_constraint ();
-
-extern int c4x_U_constraint ();
-
-extern void c4x_emit_libcall ();
-
-extern void c4x_emit_libcall3 ();
-
-extern void c4x_emit_libcall_mulhi ();
-
-extern int c4x_emit_move_sequence ();
-
-extern int legitimize_operands ();
-
-extern int valid_operands ();
-
-extern int valid_parallel_load_store ();
-
-extern int valid_parallel_operands_4 ();
-
-extern int valid_parallel_operands_5 ();
-
-extern int valid_parallel_operands_6 ();