* ifcvt.c (noce_try_store_flag_constants): Don't check
no_new_pseudos here.
(noce_try_store_flag_constants): Don't check no_new_pseudos.
(noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
noce_try_sign_mask): Likewise.
(if_convert): Check no_new_pseudos here.
(cond_exec_process_if_block, noce_process_if_block, find_if_block):
Remove prototypes.
(struct noce_if_info): Add then_bb, else_bb, join_bb members.
(noce_get_condition): Handle new then_else_reversed argument.
(noce_init_if_info): Remove, fold into noce_find_if_block.
(noce_process_if_block): Take a struct noce_if_info as the
argument. Don't set up one based on ce_if_info. Update pointer
references accordingly.
(cond_move_process_if_block): Likewise.
(process_if_block): Removed.
(find_if_block): Removed. Move functionality two new functions,
noce_find_if_block and cond_exec_find_if_block.
(noce_find_if_block): New function. Be aware of IF-THEN-JOIN
blocks and the symmetric IF-ELSE-JOIN case.
(cond_exec_find_if_block): Also new function mostly based on old
find_if_block and process_if_block.
(find_if_header): Replace find_if_block call with separately
guarded calls to noce_find_if_block and cond_exec_find_if_block.
(find_cond_trap): Update noce_get_condition call.
(dead_or_predicable): Likewise.
From-SVN: r123223
2007-03-26 H.J. Lu <hongjiu.lu@intel.com>
* acx.m4 (ACX_BUGURL): Set BUGURL first. Quote $BUGURL first
when setting REPORT_BUGS_TEXI.
From-SVN: r123218
2007-03-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/31199
*io/io.h: Add saved_pos to gfc_unit structure.
*io/open.c (new_unit): Initialize saved_pos.
*io/transfer.c (data_transfer_init): Set max_pos to value in saved_pos.
(next_record_w): Fix whitespace.
(finalze_transfer): Calculate max_pos for ADVANCE="no" and save it for
later use. If not ADVANCE="no" set saved_pos to zero.
From-SVN: r123205
* config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
in SImode for save_world.
* config/rs6000/altivec.md (save_world, restore_world): Convert to
LR hard reg.
From-SVN: r123198
PR fortran/30877
* fortran/interface.c (check_operator_interface): Implement
the standard checks on user operators extending intrinsic operators.
* fortran/resolve.c (resolve_operator): If the ranks of operators
don't match, don't error out but try the user-defined ones first.
* gfortran.dg/operator_1.f90: New test.
* gfortran.dg/operator_2.f90: New test.
From-SVN: r123196
2007-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result. Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.
PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly. Do not indirect formal pointer
functions since it is the function reference that is needed.
2007-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.
PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.
PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.
From-SVN: r123184
2007-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result. Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.
PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly. Do not indirect formal pointer
functions since it is the function reference that is needed.
2007-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.
PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.
PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.
From-SVN: r123183
* testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
Use 'volatile float sum' to create sum of floats to avoid false
negative due to excess precision on ix86 targets.
(main): Ditto.
From-SVN: r123180
* tracer.c (tracer): Don't take FLAGS argument. Assert we are
in cfglayout mode. Don't go into and out of cfglayout mode.
Link the blocks in the order of the constructed traces.
(rest_of_handle_tracer): Adjust call to tracer.
* loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
Don't go into cfglayout mode.
(rtl_loop_done): Don't go out of cfglayout mode.
* cfglayout.c (relink_block_chain): New function, split out from...
(fixup_reorder_chain): ...here. Remove redundant checking.
(cfg_layout_finalize): Don't clear the header, footer, and aux
fields here, move the code to do so to relink_block_chain. Likewise
for free_original_copy_tables.
* rtl.h (tracer): Update prototype.
* bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
Assert we are in cfglayout mode. Don't go into and out of cfglayout
mode. Use relink_block_chain to serialize the CFG according to the
new basic block order. Move targetm.cannot_modify_jumps_p check from
here...
(gate_handle_reorder_blocks): ...to here.
(duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
from here...
(gate_duplicate_computed_gotos): ...to here.
(rest_of_handle_reorder_blocks): Don't see if anything has changed,
something always changes when going into and out of cfglayout mode.
Perform an expensive cfg cleanup while going into cfglayout mode.
Always update liveness information on HAVE_conditional_execution
targets. Reserialize the basic blocks and go out of cfglayout mode.
* reg-stack.c: Include cfglayout.h.
(rest_of_handle_stack_regs): Go into and out of cfglayout mode around
the call to reorder_basic_blocks.
* basic-block.h (reorder_basic_blocks): Update prototype.
(relink_block_chain): New prototype.
* passes.c (pass_outof_cfg_layout_mode): Move after cse2.
From-SVN: r123167
2007-03-23 Paolo Carlini <pcarlini@suse.de>
* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc:
Likewise use std::numeric_limits<>::max().
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc:
Minor tweaks.
From-SVN: r123166
2007-03-23 Paolo Carlini <pcarlini@suse.de>
* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc:
Likewise use std::numeric_limits<>::max().
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc:
Minor tweaks.
From-SVN: r123165
* config/mips/mips.md (type, hazard, *movdi_32bit,
*movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
*movhi_internal, *movqi_internal, *movsf_hardfloat,
*movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
applicable.
(movcc): Change first xfer to multi.
* config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
config/mips/generic.md: Change reservations using "xfer" to use
"mfc,mtc".
* config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
using match_operand.
(ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
* config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
examining mode.
(ir_sr70_xfer_to): Use "mtc" instead of examining mode.
From-SVN: r123164
2007-03-23 Andreas Tobler <a.tobler@schweiz.org>
* testsuite/lib/libgomp.exp (libgomp_init): Add -shared-libgcc for
*-*-darwin*.
* testsuite/libgomp.c++/c++.exp: Look for shared libstdc++ library
and use it if found.
From-SVN: r123162