--- gcc/config/mips.h 2018/04/24 17:53:51 1.1.1.2 +++ gcc/config/mips.h 2018/04/24 17:58:39 1.1.1.3 @@ -49,12 +49,14 @@ enum cmp_type { enum delay_type { DELAY_NONE, /* no delay slot */ DELAY_LOAD, /* load from memory delay */ - DELAY_HILO /* move from/to hi/lo registers */ + DELAY_HILO, /* move from/to hi/lo registers */ + DELAY_FCMP /* delay after doing c..{d,s} */ }; /* Which processor to schedule for. Since there is no difference between a R2000 and R3000 in terms of the scheduler, we collapse them into - just an R3000. */ + just an R3000. The elements of the enumeration must match exactly + the cpu attribute in the mips.md machine description. */ enum processor_type { PROCESSOR_DEFAULT, @@ -63,6 +65,18 @@ enum processor_type { PROCESSOR_R4000 }; +/* Recast the cpu class to be the cpu attribute. */ +#define mips_cpu_attr ((enum attr_cpu)mips_cpu) + +/* Which type of block move to do (whether or not the last store is + split out so it can fill a branch delay slot). */ + +enum block_move_type { + BLOCK_MOVE_NORMAL, /* generate complete block move */ + BLOCK_MOVE_NOT_LAST, /* generate all but last store */ + BLOCK_MOVE_LAST /* generate just the last store */ +}; + extern char mips_reg_names[][8]; /* register names (a0 vs. $4). */ extern char mips_print_operand_punct[]; /* print_operand punctuation chars */ extern char *current_function_name; /* current function being compiled */ @@ -105,19 +119,20 @@ extern struct rtx_def *mips_load_reg4; / extern void abort_with_insn (); extern int arith32_operand (); extern int arith_operand (); -extern int call_memory_operand (); extern int cmp_op (); extern int cmp2_op (); extern unsigned long compute_frame_size (); extern void expand_block_move (); extern int equality_op (); extern int fcmp_op (); +extern int fpsw_register_operand (); extern struct rtx_def * function_arg (); extern void function_arg_advance (); extern int function_arg_partial_nregs (); extern void function_epilogue (); extern void function_prologue (); extern void gen_conditional_branch (); +extern struct rtx_def * gen_int_relational (); extern void init_cumulative_args (); extern int large_int (); extern int md_register_operand (); @@ -132,10 +147,14 @@ extern int mips_epilogue_delay_slots () extern char *mips_fill_delay_slot (); extern char *mips_move_1word (); extern char *mips_move_2words (); +extern void mips_output_double (); extern int mips_output_external (); +extern void mips_output_float (); extern void mips_output_filename (); extern void mips_output_lineno (); +extern char *output_block_move (); extern void override_options (); +extern int pc_or_label_operand (); extern void print_operand_address (); extern void print_operand (); extern void print_options (); @@ -157,9 +176,14 @@ extern void text_section (); #ifndef HALF_PIC_P #define HALF_PIC_P() 0 +#define HALF_PIC_NUMBER_PTRS 0 +#define HALF_PIC_NUMBER_REFS 0 #define HALF_PIC_ENCODE(DECL) +#define HALF_PIC_DECLARE(NAME) #define HALF_PIC_INIT() error ("half-pic init called on systems that don't support it.") #define HALF_PIC_ADDRESS_P(X) 0 +#define HALF_PIC_PTR(X) X +#define HALF_PIC_FINISH(STREAM) #endif @@ -235,6 +259,9 @@ while (0) #define OPTIMIZATION_OPTIONS(LEVEL) \ { \ + flag_no_function_cse = TRUE; \ + flag_gnu_linker = FALSE; \ + \ if (LEVEL) \ { \ flag_omit_frame_pointer = TRUE; \ @@ -375,10 +402,6 @@ while (0) %{save-temps: }" #endif -#ifndef CC1PLUS_SPEC -#define CC1PLUS_SPEC "%{!fgnu-binutils: -fno-gnu-binutils}" -#endif - /* Preprocessor specs */ #ifndef CPP_SPEC @@ -405,7 +428,7 @@ while (0) /* Print subsidiary information on the compiler version in use. */ -#define MIPS_VERSION "[AL 1.1, MM 14]" +#define MIPS_VERSION "[AL 1.1, MM 19]" #ifndef MACHINE_TYPE #define MACHINE_TYPE "BSD Mips" @@ -596,6 +619,13 @@ do { \ #define EXTENDED_COFF /* ECOFF, not normal coff */ #endif +/* Don't use the default definitions, because we don't have gld. + Also, we don't want stabs when generating ECOFF output. + Instead we depend on collect to handle these. */ + +#define ASM_OUTPUT_CONSTRUCTOR(file, name) +#define ASM_OUTPUT_DESTRUCTOR(file, name) + /* Run-time compilation parameters selecting different hardware subsets. */ @@ -635,8 +665,8 @@ do { \ #define MASK_DEBUG 0x40000000 /* Eliminate version # in .s file */ #define MASK_DEBUG_A 0x20000000 /* don't allow