diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2000-01-14 16:21:46 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2000-01-14 16:21:46 +0000 |
commit | 2b046bda6e342d0b7031eed2cb884dd396484f6b (patch) | |
tree | 4810c165933d71ab9de212334a69018b527c90d4 | |
parent | 699851185ad5f8039da3cdc62a60c79dda4ce180 (diff) | |
download | gcc-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/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/arc/arc-protos.h | 84 | ||||
-rw-r--r-- | gcc/config/arc/arc.c | 109 | ||||
-rw-r--r-- | gcc/config/arc/arc.h | 32 | ||||
-rw-r--r-- | gcc/config/arc/arc.md | 6 |
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") |