gcc/
* doc/invoke.texi (-mpaired-single): Don't say that the option
requires 64-bit code.
* config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
* config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
(ISA_HAS_NMADD_NMSUB): Add a mode argument. Return true for
V2SF if ISA_MIPS32R2.
(MODES_TIEABLE_P): Use mips_modes_tieable_p.
* config/mips/mips.c (mips_rtx_costs): Pass a mode argument
to ISA_HAS_NMADD_NMSUB.
(mips_split_doubleword_move): Handle V2SF.
(mips_modes_tieable_p): New function.
(override_options): Report a warning rather than an error when
-mpaired-single is used on ISAs that don't support it; use
ISA_HAS_PAIRED_SINGLE to check that case.
* config/mips/mips.md (MOVE64): New mode iterator. Replace DI
and DF move splitters with a single MOVE64 splitter, thereby adding
a V2SF splitter too.
(SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
Add a TARGET_FLOAT64 condition to TF. Add V2SF to the iterator.
(HALFMODE): Add V2SF.
(*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
(*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
(movv2sf_hardfloat_64bit): Tweak ordering of conditions.
(movv2sf_hardfloat_32bit): New pattern.
(load_low<mode>, load_high<mode>, store_word<mode>): Remove
TARGET_DOUBLE_FLOAT conditions.
gcc/testsuite/
* gcc.dg/vect/vect.exp: Extend -mpaired-single handling to all
MIPS targets.
* g++.dg/vect/vect.exp: Likewise.
* lib/fortran-torture.exp: Likewise.
* gcc.target/mips/mips-ps-1.c: Use mpaired_single rather than
mipsisa64*-*-* as the target selector. Remove -mips64,
-mhard-float and -mgp64 from the options list.
* gcc.target/mips/mips-ps-2.c: Likewise.
* gcc.target/mips/mips-ps-3.c: Likewise.
* gcc.target/mips/mips-ps-4.c: Likewise.
* gcc.target/mips/mips-ps-6.c: Likewise.
* gcc.target/mips/mips-ps-5.c: Remove -mhard-float from the
options list.
* gcc.target/mips/sb1-1.c: Likewise.
* gcc.target/mips/mips-ps-type.c: Likewise.
* gcc.target/mips/mips-ps-7.c: New test.
* gcc.target/mips/mips-ps-type-2.c: Likewise.
* gcc.target/mips/fpr-moves-6.c: Remove XFAIL.
* gcc.target/mips/mips.exp (setup_mips_tests): Set mips_fp and
mips_gp instead of mips_fp64 and mips_gp64. Treat -mgp32 -mfp64
as forcing an ABI and an architecture.
(is_gp32_flag, is_gp64_flag): Fold into...
(dg-mips-options): ...here. Make -mpaired-single imply -mfp64,
then -mfp64 imply -mhard-float. Apply register rules after the
loop. Handle -march=mipsN like -mipsN.
From-SVN: r129522
* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
saved CR2 offset to low 32 bits of regs->ccr rather than the whole
64-bit register in 64-bit libgcc.
From-SVN: r129520
2007-10-20 Tobias Burnus <burnus@net-b.de>
PR fortran/33818
* resolve.c (resolve_variable): Check that symbol is in the same
namespace as the entry function.
2007-10-20 Tobias Burnus <burnus@net-b.de>
PR fortran/33818
* gfortran.dg/entry_dummy_ref_3.f90: New.
From-SVN: r129510
2007-10-20 Paul Thomas <pault@gcc.gnu.org>
FX Coudert <fxcoudert@gcc.gnu.org>
PR fortran/31608
* trans-array.c (gfc_conv_expr_descriptor): For all except
indirect references, use gfc_trans_scalar_assign instead of
gfc_add_modify_expr.
* iresolve.c (check_charlen_present): Separate creation of cl
if necessary and add code to treat an EXPR_ARRAY.
(gfc_resolve_char_achar): New function.
(gfc_resolve_achar, gfc_resolve_char): Call it.
(gfc_resolve_transfer): If the MOLD expression does not have a
character length expression, get it from a constant length.
2007-10-20 Paul Thomas <pault@gcc.gnu.org>
FX Coudert <fxcoudert@gcc.gnu.org>
PR fortran/31608
* gfortran.dg/char_cast_1.f90: New test.
Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
From-SVN: r129505
2007-10-19 Richard Guenther <rguenther@suse.de>
PR middle-end/33816
PR middle-end/32921
* stor-layout.c (layout_type): Assert that aggregates do not
have their alias sets set.
* alias.c (get_alias_set): Return alias set zero for incomplete
types, return the alias set of the element for incomplete array
types, but do not remember these.
* gfortran.dg/pr32921.f: New testcase.
From-SVN: r129491
2007-10-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/33544
* simplify.c (gfc_simplify_transfer): Only warn for short transfer when
-Wsurprising is given.
* invoke.texi: Document revised behavior.
From-SVN: r129488
gcc/
* config/mips/mips.c (mips_canonicalize_comparison): Check
mips_relational_operand_ok_p before trying to rewrite the test.
Only calculate PLUS_ONE if needed.
(mips_emit_int_relational): Don't call mips_relational_operand_ok_p
here.
From-SVN: r129483
gcc/
* config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
rather then gen_rtx_MEM.
(mips_setup_incoming_varargs): Use gen_frame_mem rather than
gen_rtx_MEM.
(mips_set_return_address): Likewise.
(mips_restore_gp): Likewise.
From-SVN: r129480
gcc/
* config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
case last.
(mips_class_max_nregs): Calculate the smallest consituent register
size and use that to determine an upper bound on the number of
registers.
From-SVN: r129478
gcc/
* config/mips/mips.c (mips16_copy_fpr_return_value): New function,
split out from...
(mips_expand_epilogue): ...here.
(mips_mdebug_abi_name): New function, split out from...
(mips_file_start): ...here.
(mips_hard_regno_mode_ok_p): New function, split out from...
(override_options): ...here.
(mips_expand_builtin_1): New function, split out from...
(mips_expand_buitin): ...here. Abort if we don't recognize
the function.
From-SVN: r129477
gcc/
* config/mips/mips.c (build_mips16_function_stub): Load the
target address into $1 before transfering the arguments.
Don't use ".set noreorder".
(build_mips16_call_stub): Likewise.
From-SVN: r129476
gcc/
* config/mips/mips.c (mips_output_32bit_xfer): New function.
(mips_output_64bit_xfer): Likewise.
(mips16_fp_args): Rename to...
(mips_output_args_xfer): ...this and replace the FROM_FP_P argument
with a DIRECTION argument. Use mips_output_32bit_xfer and
mips_output_64bit_xfer.
(build_mips16_function_stub): Update accordingly.
(mips16_fpret_double): Delete.
(build_mips16_call_stub): Update after above changes.
Use mips_output_32bit_xfer. Use mips_output_64bit_xfer instead
of mips16_fpret_double. Use GP_REG_RETURN.
From-SVN: r129475
2007-10-18 David S. Miller <davem@davemloft.net>
Add Niagara-2 support.
* doc/invoke.texi: Document -m{cpu,tune}=niagara2.
* config.gcc: Add niagara2 to cpu and tune lists for sparc.
* config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
(include): Add inclusion of niagara2.md
* config/sparc/sparc.c (niagara2_costs): New.
(sparc_override_options): Add niagara2 entry to cpu_default[]
and cpu_table[]. Set align_functions to 32 on Niagara2. Use
niagara2_costs when PROCESSOR_NIAGARA2. Handle Niagara2 for
PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
(sparc_initialize_trampoline): Handle niagara2 like niagara.
(sparc64_initialize_trampoline): Likewise.
(sparc_use_sched_lookahead): Likewise.
(sparc_issue_rate): Likewise.
* config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
mcpu=niagara2
* config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
TARGET_CPU_niagara2.
(PROCESSOR_NIAGARA2): New.
(REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
(BRANCH_COST): Likewise.
* config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
* config/sparc/sol2.h: Likewise.
* config/sparc/niagara2.md: New file.
From-SVN: r129472
2007-10-18 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/33795
* libgfortran.h: Add unbuffered_preconnected.
* io/unix.c (output_stream): Set stream unbuffered flag if
options.unbuffered_preconnected has been set.
(error_stream): Ditto.
* runtime/environ.c (variable_table): Add to environment variable table
the entry: GFORTRAN_UNBUFFERED_PRECONNECTED.
Co-Authored-By: Jerry DeLisle <jvdelisle@gcc.gnu.org>
From-SVN: r129470
gcc/
* config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
profiling code.
* config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
"unsigned int" rather than "int" and put them with the other
register-related fields. Put expanded comments above fields
rather than to their right.
(mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
with a NUM_REGS_PTR argument.
(mips16e_save_restore_pattern_p): Update accordingly.
(compute_frame_size): Clarify frame diagram. Rewrite.
From-SVN: r129456