+2004-03-02 Eric Christopher <echristo@redhat.com>
+
+ * config/mips/mips16.S: Change fixsfsi and fixdfsi to
+ fix_trunc.
+ * config/mips/mips.c (mips_init_libfuncs): Change accordingly.
+ * config/mips/t-elf (LIB1ASMFUNCS): Ditto.
+ * config/mips/t-isa3264 (LIB1ASMFUNCS): Ditto.
+ * config/mips/t-r3900 (LIB1ASMFUNCS): Ditto.
+
2004-03-02 Richard Henderson <rth@redhat.com>
PR middle-end/11767
* fold-const.c (fold): An equality comparison of a non-weak object
against zero has a known result. Similarly an equality comparison
of the address of two non-weak, unaliased symbols has a known result.
-
+
* ggc-page.c (struct page_entry): New field PREV.
(ggc_alloc): Update PREV field appropriately.
(sweep_pages): Likewise.
(ggc_free): Likewise. Use PREV field rather than loop to
improve ggc_free performance.
-
+
2004-03-01 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.c (mips_output_division): Use the division
* config/sh/sh.c: Convert to ISO-C.
2004-02-28 Andrew Pinski <pinskia@physics.uc.edu>
-
+
* c-typeck.c (tagged_types_tu_compatible_p): Fix pasto in
my previous patch.
2004-02-28 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
- * config/mips/mips.c (override_options): Remove an obsolete
+ * config/mips/mips.c (override_options): Remove an obsolete
duplicate definition of the "e" constraint.
* config/mips/mips.h: Update a comment accordingly.
* Makefile.in (OBJS-common): Add it.
* diagnostic.c (rtl_dump_and_exit): Move decl ...
* flags.h (rtl_dump_and_exit): ... here.
- * output.h (size_directive_output, last_assemble_variable_decl):
+ * output.h (size_directive_output, last_assemble_variable_decl):
Move from toplev.c.
* rtl.h (reg_alloc): Move from toplev.c.
* toplev.c (HAVE_conditional_execution, DUMPFILE_FORMAT,
struct dump_file_info, enum dump_file_index, dump_file_tbl,
open_dump_file, close_dump_file, rest_of_decl_compilation,
rest_of_type_compilation, rest_of_handle_final,
- rest_of_handle_delay_slots, rest_of_handle_stack_regs,
+ rest_of_handle_delay_slots, rest_of_handle_stack_regs,
rest_of_handle_variable_tracking, rest_of_handle_machine_reorg,
rest_of_handle_new_regalloc, rest_of_handle_old_regalloc,
rest_of_handle_regrename, rest_of_handle_reorder_blocks,
rest_of_handle_sched, rest_of_handle_sched2, rest_of_handle_regmove,
- rest_of_handle_tracer, rest_of_handle_if_conversion,
+ rest_of_handle_tracer, rest_of_handle_if_conversion,
rest_of_handle_if_after_combine, rest_of_handle_web,
rest_of_handle_branch_prob,
rest_of_handle_value_profile_transformations, rest_of_handle_cfg,
- rest_of_handle_addressof, rest_of_handle_sibling_calls,
+ rest_of_handle_addressof, rest_of_handle_sibling_calls,
rest_of_handle_jump_bypass, rest_of_handle_inlining,
rest_of_handle_null_pointer, rest_of_handle_combine,
rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2,
- rest_of_handle_gcse, rest_of_handle_loop_optimize,
+ rest_of_handle_gcse, rest_of_handle_loop_optimize,
rest_of_handle_loop2, rest_of_compilation): Move to passes.c.
(decode_d_option): Use enable_rtl_dump_file.
(compile_file, finalize, do_compile): Move profile+combine+graph
* config/rs6000/spe.md: Delete spe_efsctuiz.
Add spe_fixuns_truncsfsi2.
Add spe_fix_truncsfsi2.
-
+
2004-02-26 Eric Christopher <echristo@redhat.com>
* c-lex.c (c_lex_string_translate): New variable.
when it is unsafe. */
if (TARGET_IRIX && mips_abi == ABI_32 && p->size == -1)
{
- fputs ("\t.globl ", asm_out_file);
+ fputs ("\t.globl ", asm_out_file);
assemble_name (asm_out_file, p->name);
fputs (" .text\n", asm_out_file);
}
emit_insn (gen_add3_insn (stack_pointer_rtx,
stack_pointer_rtx,
GEN_INT (step2)));
-
+
/* Add in the __builtin_eh_return stack adjustment. We need to
use a temporary in mips16 code. */
if (current_function_calls_eh_return)
set_optab_libfunc (lt_optab, SFmode, "__mips16_ltsf2");
set_optab_libfunc (le_optab, SFmode, "__mips16_lesf2");
- set_conv_libfunc (sfix_optab, SImode, SFmode, "__mips16_fixsfsi");
+ set_conv_libfunc (sfix_optab, SImode, SFmode, "__mips16_fix_truncsfsi");
set_conv_libfunc (sfloat_optab, SFmode, SImode, "__mips16_floatsisf");
if (TARGET_DOUBLE_FLOAT)
set_conv_libfunc (sext_optab, DFmode, SFmode, "__mips16_extendsfdf2");
set_conv_libfunc (trunc_optab, SFmode, DFmode, "__mips16_truncdfsf2");
- set_conv_libfunc (sfix_optab, SImode, DFmode, "__mips16_fixdfsi");
+ set_conv_libfunc (sfix_optab, SImode, DFmode, "__mips16_fix_truncdfsi");
set_conv_libfunc (sfloat_optab, DFmode, SImode, "__mips16_floatsidf");
}
}
int indexed = GET_CODE (operands[3]) == REG;
int code;
char buffer[30];
-
+
if (locality <= 0)
code = (write ? 5 : 4); /* store_streamed / load_streamed. */
else if (locality <= 2)
nop; \
.set reorder; \
ENDFN (NAME)
-
+
#ifdef L_m16negsf2
SFOP2(__mips16_negsf2, neg.s)
#endif
#ifdef L_m16abssf2
SFOP2(__mips16_abssf2, abs.s)
#endif
-
+
/* Single precision comparisons. */
/* This macro defines a function which loads two single precision
ENDFN (__mips16_floatsisf)
#endif
-#ifdef L_m16fixsfsi
-STARTFN (__mips16_fixsfsi)
+#ifdef L_m16fix_truncsfsi
+STARTFN (__mips16_fix_truncsfsi)
.set noreorder
mtc1 $4,$f0
nop
trunc.w.s $f0,$f0,$4
mfc1 $2,$f0
j $31
- nop
+ nop
.set reorder
- ENDFN (__mips16_fixsfsi)
+ ENDFN (__mips16_fix_truncsfsi)
#endif
#if !defined(__mips_single_float) && !defined(__SINGLE_FLOAT)
-
+
/* The double precision operations. We need to use different code
based on the preprocessor symbol __mips64, because the way in which
double precision values will change. Without __mips64, the value
#define LDDBL1 dmtc1 $4,$f12
#elif defined(__mipsfp64)
#define LDDBL1 sw $4,0($29); sw $5,4($29); l.d $f12,0($29)
-#elif defined(__MIPSEB__)
+#elif defined(__MIPSEB__)
#define LDDBL1 mtc1 $4,$f13; mtc1 $5,$f12
-#else
+#else
#define LDDBL1 mtc1 $4,$f12; mtc1 $5,$f13
#endif
#define LDDBL2 dmtc1 $5,$f14
#elif defined(__mipsfp64)
#define LDDBL2 sw $6,8($29); sw $7,12($29); l.d $f14,8($29)
-#elif defined(__MIPSEB__)
+#elif defined(__MIPSEB__)
#define LDDBL2 mtc1 $6,$f15; mtc1 $7,$f14
-#else
+#else
#define LDDBL2 mtc1 $6,$f14; mtc1 $7,$f15
#endif
-
+
/* Move the double precision return value to the right place. */
#if defined(__mips64)
#define RETDBL dmfc1 $2,$f0
#elif defined(__mipsfp64)
#define RETDBL s.d $f0,0($29); lw $2,0($29); lw $3,4($29)
-#elif defined(__MIPSEB__)
+#elif defined(__MIPSEB__)
#define RETDBL mfc1 $2,$f1; mfc1 $3,$f0
-#else
+#else
#define RETDBL mfc1 $2,$f0; mfc1 $3,$f1
#endif
-
+
/* Double precision math. */
/* This macro defines a function which loads two double precision
nop; \
.set reorder; \
ENDFN (NAME)
-
+
#ifdef L_m16negdf2
DFOP2(__mips16_negdf2, neg.d)
#endif
DFOP2(__mips16_absdf2, abs.d)
#endif
-
+
/* Conversions between single and double precision. */
#ifdef L_m16extsfdf2
ENDFN (__mips16_floatsidf)
#endif
-#ifdef L_m16fixdfsi
-STARTFN (__mips16_fixdfsi)
+#ifdef L_m16fix_truncdfsi
+STARTFN (__mips16_fix_truncdfsi)
.set noreorder
LDDBL1
nop
j $31
nop
.set reorder
- ENDFN (__mips16_fixdfsi)
+ ENDFN (__mips16_fix_truncdfsi)
#endif
#endif /* !__mips_single_float */
#elif defined(__mipsfp64)
sw $2,0($29)
sw $3,4($29)
- l.d $f0,0($29)
-#elif defined(__MIPSEB__)
+ l.d $f0,0($29)
+#elif defined(__MIPSEB__)
mtc1 $2,$f1
j $31
mtc1 $3,$f0
-#else
+#else
mtc1 $2,$f0
j $31
mtc1 $3,$f1
ENDFN (__mips16_call_stub_df_10)
#endif
#endif /* !__mips_single_float */
-
LIB1ASMSRC = mips/mips16.S
LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
_m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
- _m16fltsisf _m16fixsfsi \
+ _m16fltsisf _m16fix_truncsfsi \
_m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \
_m16extsfdf2 _m16trdfsf2 \
_m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \
- _m16fltsidf _m16fixdfsi \
+ _m16fltsidf _m16fix_truncdfsi \
_m16retsf _m16retdf \
_m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \
_m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \
LIB1ASMSRC = mips/mips16.S
LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
_m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
- _m16fltsisf _m16fixsfsi \
+ _m16fltsisf _m16fix_truncsfsi \
_m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \
_m16extsfdf2 _m16trdfsf2 \
_m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \
- _m16fltsidf _m16fixdfsi \
+ _m16fltsidf _m16fix_truncdfsi \
_m16retsf _m16retdf \
_m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \
_m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \
LIB1ASMSRC = mips/mips16.S
LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
_m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
- _m16fltsisf _m16fixsfsi \
+ _m16fltsisf _m16fix_truncsfsi \
_m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \
_m16extsfdf2 _m16trdfsf2 \
_m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \
- _m16fltsidf _m16fixdfsi \
+ _m16fltsidf _m16fix_truncdfsi \
_m16retsf _m16retdf \
_m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \
_m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \