aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>2000-01-14 16:21:46 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>2000-01-14 16:21:46 +0000
commit2b046bda6e342d0b7031eed2cb884dd396484f6b (patch)
tree4810c165933d71ab9de212334a69018b527c90d4
parent699851185ad5f8039da3cdc62a60c79dda4ce180 (diff)
downloadgcc-2b046bda6e342d0b7031eed2cb884dd396484f6b.zip
gcc-2b046bda6e342d0b7031eed2cb884dd396484f6b.tar.gz
gcc-2b046bda6e342d0b7031eed2cb884dd396484f6b.tar.bz2
arc-protos.h: New file.
* arc-protos.h: New file. * arc.c: Include tm_p.h. Add static prototypes. Fix compile time warnings. * arc.h: Move prototypes to arc-protos.h. Fix compile time warnings. * arc.md: Likewise. From-SVN: r31417
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/arc/arc-protos.h84
-rw-r--r--gcc/config/arc/arc.c109
-rw-r--r--gcc/config/arc/arc.h32
-rw-r--r--gcc/config/arc/arc.md6
5 files changed, 175 insertions, 68 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 29f0ccf..b332bc8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,17 @@
2000-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+ * arc-protos.h: New file.
+
+ * arc.c: Include tm_p.h. Add static prototypes. Fix compile
+ time warnings.
+
+ * arc.h: Move prototypes to arc-protos.h. Fix compile time
+ warnings.
+
+ * arc.md: Likewise.
+
+2000-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
* dsp16xx-protos.h: New file.
* dsp16xx.c: Include tm_p.h. Add static prototypes. Fix compile
diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
new file mode 100644
index 0000000..442a1bf
--- /dev/null
+++ b/gcc/config/arc/arc-protos.h
@@ -0,0 +1,84 @@
+/* Definitions of target machine for GNU compiler, Argonaut ARC cpu.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+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
+#ifdef TREE_CODE
+extern void arc_va_start PARAMS ((int, tree, rtx));
+extern rtx arc_va_arg PARAMS ((tree, tree));
+#endif /* TREE_CODE */
+
+extern enum machine_mode arc_select_cc_mode PARAMS ((enum rtx_code, rtx, rtx));
+
+/* Define the function that build the compare insn for scc and bcc. */
+extern struct rtx_def *gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx));
+
+/* Declarations for various fns used in the .md file. */
+extern const char *output_shift PARAMS ((rtx *));
+
+extern int symbolic_operand PARAMS ((rtx, enum machine_mode));
+extern int arc_double_limm_p PARAMS ((rtx));
+extern int arc_address_cost PARAMS ((rtx));
+extern int arc_eligible_for_epilogue_delay PARAMS ((rtx, int));
+extern void arc_initialize_trampoline PARAMS ((rtx, rtx, rtx));
+extern void arc_print_operand PARAMS ((FILE *, rtx, int));
+extern void arc_print_operand_address PARAMS ((FILE *, rtx));
+extern void arc_final_prescan_insn PARAMS ((rtx, rtx *, int));
+extern int call_address_operand PARAMS ((rtx, enum machine_mode));
+extern int call_operand PARAMS ((rtx, enum machine_mode));
+extern int symbolic_memory_operand PARAMS ((rtx, enum machine_mode));
+extern int short_immediate_operand PARAMS ((rtx, enum machine_mode));
+extern int long_immediate_operand PARAMS ((rtx, enum machine_mode));
+extern int long_immediate_loadstore_operand PARAMS ((rtx, enum machine_mode));
+extern int move_src_operand PARAMS ((rtx, enum machine_mode));
+extern int move_double_src_operand PARAMS ((rtx, enum machine_mode));
+extern int move_dest_operand PARAMS ((rtx, enum machine_mode));
+extern int load_update_operand PARAMS ((rtx, enum machine_mode));
+extern int store_update_operand PARAMS ((rtx, enum machine_mode));
+extern int nonvol_nonimm_operand PARAMS ((rtx, enum machine_mode));
+extern int const_sint32_operand PARAMS ((rtx, enum machine_mode));
+extern int const_uint32_operand PARAMS ((rtx, enum machine_mode));
+extern int proper_comparison_operator PARAMS ((rtx, enum machine_mode));
+extern int shift_operator PARAMS ((rtx, enum machine_mode));
+#endif /* RTX_CODE */
+
+#ifdef TREE_CODE
+extern enum arc_function_type arc_compute_function_type PARAMS ((tree));
+extern int arc_comp_type_attributes PARAMS ((tree, tree));
+extern void arc_set_default_type_attributes PARAMS ((tree));
+extern int arc_valid_machine_decl_attribute PARAMS ((tree, tree, tree, tree));
+extern void arc_setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *,
+ enum machine_mode, tree,
+ int *, int));
+#endif /* TREE_CODE */
+
+
+extern void arc_init PARAMS ((void));
+extern void arc_asm_file_start PARAMS ((FILE *));
+extern unsigned int arc_compute_frame_size PARAMS ((int));
+extern void arc_save_restore PARAMS ((FILE *, const char *, unsigned int,
+ unsigned int, const char *));
+extern void arc_output_function_prologue PARAMS ((FILE *, int));
+extern void arc_output_function_epilogue PARAMS ((FILE *, int));
+extern int arc_delay_slots_for_epilogue PARAMS ((void));
+extern void arc_finalize_pic PARAMS ((void));
+extern void arc_ccfsm_at_label PARAMS ((const char *, int));
+extern int arc_ccfsm_branch_deleted_p PARAMS ((void));
+extern void arc_ccfsm_record_branch_deleted PARAMS ((void));
+
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index 8e9c30e..b92d893 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -1,5 +1,5 @@
/* Subroutines used for code generation on the Argonaut ARC cpu.
- Copyright (C) 1994, 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1994, 95, 97-99, 2000 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -36,14 +36,16 @@ Boston, MA 02111-1307, USA. */
#include "function.h"
#include "expr.h"
#include "recog.h"
+#include "toplev.h"
+#include "tm_p.h"
/* Which cpu we're compiling for (NULL(=base), ???). */
-char *arc_cpu_string;
+const char *arc_cpu_string;
int arc_cpu_type;
/* Name of mangle string to add to symbols to separate code compiled for each
cpu (or NULL). */
-char *arc_mangle_cpu;
+const char *arc_mangle_cpu;
/* Save the operands last given to a compare for use when we
generate a scc or bcc insn. */
@@ -51,14 +53,14 @@ rtx arc_compare_op0, arc_compare_op1;
/* Name of text, data, and rodata sections, as specified on command line.
Selected by -m{text,data,rodata} flags. */
-char *arc_text_string = ARC_DEFAULT_TEXT_SECTION;
-char *arc_data_string = ARC_DEFAULT_DATA_SECTION;
-char *arc_rodata_string = ARC_DEFAULT_RODATA_SECTION;
+const char *arc_text_string = ARC_DEFAULT_TEXT_SECTION;
+const char *arc_data_string = ARC_DEFAULT_DATA_SECTION;
+const char *arc_rodata_string = ARC_DEFAULT_RODATA_SECTION;
/* Name of text, data, and rodata sections used in varasm.c. */
-char *arc_text_section;
-char *arc_data_section;
-char *arc_rodata_section;
+const char *arc_text_section;
+const char *arc_data_section;
+const char *arc_rodata_section;
/* Array of valid operand punctuation characters. */
char arc_punct_chars[256];
@@ -80,15 +82,17 @@ static int arc_ccfsm_target_label;
arc_print_operand. */
static int last_insn_set_cc_p;
static int current_insn_set_cc_p;
-static void record_cc_ref ();
-
-void arc_init_reg_tables ();
+static void record_cc_ref PARAMS ((rtx));
+static void arc_init_reg_tables PARAMS ((void));
+static int get_arc_condition_code PARAMS ((rtx));
/* Called by OVERRIDE_OPTIONS to initialize various things. */
void
arc_init (void)
{
+ char *tmp;
+
if (arc_cpu_string == 0
|| !strcmp (arc_cpu_string, "base"))
{
@@ -108,12 +112,12 @@ arc_init (void)
}
/* Set the pseudo-ops for the various standard sections. */
- arc_text_section = xmalloc (strlen (arc_text_string) + sizeof (ARC_SECTION_FORMAT) + 1);
- sprintf (arc_text_section, ARC_SECTION_FORMAT, arc_text_string);
- arc_data_section = xmalloc (strlen (arc_data_string) + sizeof (ARC_SECTION_FORMAT) + 1);
- sprintf (arc_data_section, ARC_SECTION_FORMAT, arc_data_string);
- arc_rodata_section = xmalloc (strlen (arc_rodata_string) + sizeof (ARC_SECTION_FORMAT) + 1);
- sprintf (arc_rodata_section, ARC_SECTION_FORMAT, arc_rodata_string);
+ arc_text_section = tmp = xmalloc (strlen (arc_text_string) + sizeof (ARC_SECTION_FORMAT) + 1);
+ sprintf (tmp, ARC_SECTION_FORMAT, arc_text_string);
+ arc_data_section = tmp = xmalloc (strlen (arc_data_string) + sizeof (ARC_SECTION_FORMAT) + 1);
+ sprintf (tmp, ARC_SECTION_FORMAT, arc_data_string);
+ arc_rodata_section = tmp = xmalloc (strlen (arc_rodata_string) + sizeof (ARC_SECTION_FORMAT) + 1);
+ sprintf (tmp, ARC_SECTION_FORMAT, arc_rodata_string);
arc_init_reg_tables ();
@@ -127,7 +131,7 @@ arc_init (void)
}
/* The condition codes of the ARC, and the inverse function. */
-static char *arc_condition_codes[] =
+static const char *const arc_condition_codes[] =
{
"al", 0, "eq", "ne", "p", "n", "c", "nc", "v", "nv",
"gt", "le", "ge", "lt", "hi", "ls", "pnz", 0
@@ -167,7 +171,7 @@ get_arc_condition_code (comparison)
enum machine_mode
arc_select_cc_mode (op, x, y)
enum rtx_code op;
- rtx x, y;
+ rtx x, y ATTRIBUTE_UNUSED;
{
switch (op)
{
@@ -187,6 +191,8 @@ arc_select_cc_mode (op, x, y)
case ASHIFTRT :
case LSHIFTRT :
return CCZNCmode;
+ default:
+ break;
}
}
return CCmode;
@@ -238,7 +244,7 @@ unsigned int arc_mode_class [NUM_MACHINE_MODES];
enum reg_class arc_regno_reg_class[FIRST_PSEUDO_REGISTER];
-void
+static void
arc_init_reg_tables ()
{
int i;
@@ -309,8 +315,8 @@ arc_init_reg_tables ()
int
arc_valid_machine_decl_attribute (type, attributes, identifier, args)
- tree type;
- tree attributes;
+ tree type ATTRIBUTE_UNUSED;
+ tree attributes ATTRIBUTE_UNUSED;
tree identifier;
tree args;
{
@@ -333,7 +339,7 @@ arc_valid_machine_decl_attribute (type, attributes, identifier, args)
int
arc_comp_type_attributes (type1, type2)
- tree type1, type2;
+ tree type1 ATTRIBUTE_UNUSED, type2 ATTRIBUTE_UNUSED;
{
return 1;
}
@@ -342,7 +348,7 @@ arc_comp_type_attributes (type1, type2)
void
arc_set_default_type_attributes (type)
- tree type;
+ tree type ATTRIBUTE_UNUSED;
{
}
@@ -374,7 +380,7 @@ call_operand (op, mode)
int
symbolic_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
switch (GET_CODE (op))
{
@@ -393,7 +399,7 @@ symbolic_operand (op, mode)
int
symbolic_memory_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
if (GET_CODE (op) == SUBREG)
op = SUBREG_REG (op);
@@ -409,7 +415,7 @@ symbolic_memory_operand (op, mode)
int
short_immediate_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
if (GET_CODE (op) != CONST_INT)
return 0;
@@ -422,7 +428,7 @@ short_immediate_operand (op, mode)
int
long_immediate_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
switch (GET_CODE (op))
{
@@ -437,6 +443,8 @@ long_immediate_operand (op, mode)
represented this way (the multiplication patterns can cause these
to be generated). They also occur for SFmode values. */
return 1;
+ default:
+ break;
}
return 0;
}
@@ -450,7 +458,7 @@ long_immediate_operand (op, mode)
int
long_immediate_loadstore_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
if (GET_CODE (op) != MEM)
return 0;
@@ -480,6 +488,8 @@ long_immediate_loadstore_operand (op, mode)
&& !SMALL_INT (INTVAL (XEXP (op, 1))))
return 1;
return 0;
+ default:
+ break;
}
return 0;
}
@@ -644,7 +654,7 @@ nonvol_nonimm_operand (op, mode)
int
const_sint32_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
/* All allowed constants will fit a CONST_INT. */
return (GET_CODE (op) == CONST_INT
@@ -658,7 +668,7 @@ const_sint32_operand (op, mode)
int
const_uint32_operand (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
#if HOST_BITS_PER_WIDE_INT > 32
/* All allowed constants will fit a CONST_INT. */
@@ -679,7 +689,7 @@ const_uint32_operand (op, mode)
int
proper_comparison_operator (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
enum rtx_code code = GET_CODE (op);
@@ -759,7 +769,7 @@ void
arc_setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
CUMULATIVE_ARGS *cum;
enum machine_mode mode;
- tree type;
+ tree type ATTRIBUTE_UNUSED;
int *pretend_size;
int no_rtl;
{
@@ -843,6 +853,8 @@ arc_address_cost (addr)
}
break;
}
+ default:
+ break;
}
return 4;
@@ -1381,7 +1393,7 @@ arc_finalize_pic ()
int
shift_operator (op, mode)
rtx op;
- enum machine_mode mode;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
{
switch (GET_CODE (op))
{
@@ -1408,15 +1420,14 @@ shift_operator (op, mode)
/* ??? We use the loop register here. We don't use it elsewhere (yet) and
using it here will give us a chance to play with it. */
-char *
+const char *
output_shift (operands)
rtx *operands;
{
- static int loopend_lab;
rtx shift = operands[3];
enum machine_mode mode = GET_MODE (shift);
enum rtx_code code = GET_CODE (shift);
- char *shift_one;
+ const char *shift_one;
if (mode != SImode)
abort ();
@@ -1472,6 +1483,8 @@ output_shift (operands)
/* The ARC doesn't have a rol insn. Use something else. */
output_asm_insn ("asl.f 0,%0\n\tadc %0,0,0", operands);
break;
+ default:
+ break;
}
}
/* Must loop. */
@@ -1487,7 +1500,7 @@ output_shift (operands)
if (optimize)
{
if (flag_pic)
- sprintf ("lr %%4,[status]\n\tadd %%4,%%4,6\t%s single insn loop start",
+ sprintf (buf, "lr %%4,[status]\n\tadd %%4,%%4,6\t%s single insn loop start",
ASM_COMMENT_START);
else
sprintf (buf, "mov %%4,%%%%st(1f)\t%s (single insn loop start) >> 2",
@@ -1531,7 +1544,7 @@ output_shift (operands)
void
arc_initialize_trampoline (tramp, fnaddr, cxt)
- rtx tramp, fnaddr, cxt;
+ rtx tramp ATTRIBUTE_UNUSED, fnaddr ATTRIBUTE_UNUSED, cxt ATTRIBUTE_UNUSED;
{
}
@@ -1601,9 +1614,11 @@ arc_print_operand (file, x, code)
arc_condition_codes[arc_ccfsm_current_cc]);
}
else
- /* This insn is executed for either path, so don't
- conditionalize it at all. */
- ; /* nothing to do */
+ {
+ /* This insn is executed for either path, so don't
+ conditionalize it at all. */
+ ; /* nothing to do */
+ }
}
else
{
@@ -1677,7 +1692,7 @@ arc_print_operand (file, x, code)
split_double (x, &first, &second);
fprintf (file, "0x%08lx",
- code == 'L' ? INTVAL (first) : INTVAL (second));
+ (long)(code == 'L' ? INTVAL (first) : INTVAL (second)));
}
else
output_operand_lossage ("invalid operand to %H/%L code");
@@ -1882,8 +1897,8 @@ record_cc_ref (insn)
void
arc_final_prescan_insn (insn, opvec, noperands)
rtx insn;
- rtx *opvec;
- int noperands;
+ rtx *opvec ATTRIBUTE_UNUSED;
+ int noperands ATTRIBUTE_UNUSED;
{
/* BODY will hold the body of INSN. */
register rtx body = PATTERN (insn);
@@ -2167,7 +2182,7 @@ arc_final_prescan_insn (insn, opvec, noperands)
void
arc_ccfsm_at_label (prefix, num)
- char *prefix;
+ const char *prefix;
int num;
{
if (arc_ccfsm_state == 3 && arc_ccfsm_target_label == num
diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
index afdaa15..0689d2e 100644
--- a/gcc/config/arc/arc.h
+++ b/gcc/config/arc/arc.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler, Argonaut ARC cpu.
- Copyright (C) 1994, 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1994, 95, 97, 98, 99, 2000 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -38,6 +38,7 @@ Boston, MA 02111-1307, USA. */
#undef PTRDIFF_TYPE
#undef WCHAR_TYPE
#undef WCHAR_TYPE_SIZE
+#undef ASM_OUTPUT_LABELREF
/* Print subsidiary information on the compiler version in use. */
#define TARGET_VERSION fprintf (stderr, " (arc)")
@@ -147,8 +148,8 @@ extern int target_flags;
extern char *m88k_short_data;
#define TARGET_OPTIONS { { "short-data-", &m88k_short_data } } */
-extern char *arc_cpu_string;
-extern char *arc_text_string,*arc_data_string,*arc_rodata_string;
+extern const char *arc_cpu_string;
+extern const char *arc_text_string,*arc_data_string,*arc_rodata_string;
#define TARGET_OPTIONS \
{ \
@@ -176,7 +177,6 @@ extern int arc_cpu_type;
Don't use this macro to turn on various extra optimizations for
`-O'. That is what `OPTIMIZATION_OPTIONS' is for. */
-extern void arc_init ();
#define OVERRIDE_OPTIONS \
do { \
@@ -688,7 +688,7 @@ extern enum reg_class arc_regno_reg_class[];
#define ROUND_ADVANCE_CUM(CUM, MODE, TYPE) \
((((MODE) == BLKmode ? TYPE_ALIGN (TYPE) : GET_MODE_BITSIZE (MODE)) \
> BITS_PER_WORD) \
- ? ((CUM) + 1 & ~1) \
+ ? (((CUM) + 1) & ~1) \
: (CUM))
/* Return boolean indicating arg of type TYPE and mode MODE will be passed in
@@ -1055,7 +1055,6 @@ do { \
/* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE,
return the mode to be used for the comparison. */
-extern enum machine_mode arc_select_cc_mode ();
#define SELECT_CC_MODE(OP, X, Y) \
arc_select_cc_mode (OP, X, Y)
@@ -1155,7 +1154,7 @@ arc_select_cc_mode (OP, X, Y)
#define ARC_DEFAULT_DATA_SECTION ".data"
#define ARC_DEFAULT_RODATA_SECTION ".rodata"
-extern char *arc_text_section,*arc_data_section,*arc_rodata_section;
+extern const char *arc_text_section, *arc_data_section, *arc_rodata_section;
/* initfini.c uses this in an asm. */
#if defined (CRT_INIT) || defined (CRT_FINI)
@@ -1257,7 +1256,6 @@ do { \
/* Control the assembler format that we output. */
/* Output at beginning of assembler file. */
-extern void arc_asm_file_start ();
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) arc_asm_file_start (FILE)
@@ -1365,7 +1363,7 @@ do { \
/* On the ARC we want to have libgcc's for multiple cpus in one binary.
We can't use `assemble_name' here as that will call ASM_OUTPUT_LABELREF
and we'll get another suffix added on if -mmangle-cpu. */
-extern char *arc_mangle_cpu;
+extern const char *arc_mangle_cpu;
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, SYMREF) \
do { \
if (TARGET_MANGLE_CPU_LIBGCC) \
@@ -1384,7 +1382,7 @@ do { \
/* We work around a dwarfout.c deficiency by watching for labels from it and
not adding the '_' prefix nor the cpu suffix. There is a comment in
dwarfout.c that says it should be using ASM_OUTPUT_INTERNAL_LABEL. */
-extern char *arc_mangle_cpu;
+extern const char *arc_mangle_cpu;
#define ASM_OUTPUT_LABELREF(FILE, NAME) \
do { \
if ((NAME)[0] == '.' && (NAME)[1] == 'L') \
@@ -1519,8 +1517,12 @@ do { if ((LOG) != 0) fprintf (FILE, "\t.align %d\n", 1 << (LOG)); } while (0)
/* Debugging information. */
/* Generate DBX and DWARF debugging information. */
+#ifndef DBX_DEBUGGING_INFO
#define DBX_DEBUGGING_INFO
+#endif
+#ifndef DWARF_DEBUGGING_INFO
#define DWARF_DEBUGGING_INFO
+#endif
/* Prefer STABS (for now). */
#undef PREFERRED_DEBUGGING_TYPE
@@ -1593,19 +1595,16 @@ do { if ((LOG) != 0) fprintf (FILE, "\t.align %d\n", 1 << (LOG)); } while (0)
/* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
is a valid machine specific attribute for DECL.
The attributes in ATTRIBUTES have previously been assigned to TYPE. */
-extern int arc_valid_machine_attribute ();
#define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, IDENTIFIER, ARGS) \
arc_valid_machine_decl_attribute (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
/* A C expression that returns zero if the attributes on TYPE1 and TYPE2 are
incompatible, one if they are compatible, and two if they are
nearly compatible (which causes a warning to be generated). */
-extern int arc_comp_type_attributes ();
#define COMP_TYPE_ATTRIBUTES(TYPE1, TYPE2) \
arc_comp_type_attributes (TYPE1, TYPE2)
/* Give newly defined TYPE some default attributes. */
-extern void arc_set_default_type_attributes ();
#define SET_DEFAULT_TYPE_ATTRIBUTES(TYPE) \
arc_set_default_type_attributes (TYPE)
@@ -1618,12 +1617,6 @@ arc_set_default_type_attributes (TYPE)
since it hasn't been defined! */
extern struct rtx_def *arc_compare_op0, *arc_compare_op1;
-/* Define the function that build the compare insn for scc and bcc. */
-extern struct rtx_def *gen_compare_reg ();
-
-/* Declarations for various fns used in the .md file. */
-extern char *output_shift ();
-
/* ARC function types. */
enum arc_function_type {
ARC_FUNCTION_UNKNOWN, ARC_FUNCTION_NORMAL,
@@ -1634,7 +1627,6 @@ enum arc_function_type {
#define ARC_INTERRUPT_P(TYPE) \
((TYPE) == ARC_FUNCTION_ILINK1 || (TYPE) == ARC_FUNCTION_ILINK2)
/* Compute the type of a function from its DECL. */
-enum arc_function_type arc_compute_function_type ();
/* Implement `va_start' for varargs and stdarg. */
diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
index 2007073..d10abe6 100644
--- a/gcc/config/arc/arc.md
+++ b/gcc/config/arc/arc.md
@@ -1,5 +1,5 @@
;; Machine description of the Argonaut ARC cpu for GNU C compiler
-;; Copyright (C) 1994, 1997, 1998, 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
;; This file is part of GNU CC.
@@ -290,6 +290,8 @@
return \"ld%V1 %0,%1\;ld%V1 %R0,%R1\";
case 3 :
return \"st%V0 %1,%0\;st%V0 %R1,%R0\";
+ default:
+ abort();
}
}"
[(set_attr "type" "move,move,load,store")
@@ -393,6 +395,8 @@
return \"ld%V1 %0,%1\;ld%V1 %R0,%R1\";
case 3 :
return \"st%V0 %1,%0\;st%V0 %R1,%R0\";
+ default:
+ abort();
}
}"
[(set_attr "type" "move,move,load,store")