pault [Sat, 24 Mar 2007 14:17:34 +0000 (14:17 +0000)]
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.
pault [Sat, 24 Mar 2007 12:30:58 +0000 (12:30 +0000)]
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.
uros [Sat, 24 Mar 2007 07:13:17 +0000 (07:13 +0000)]
* 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.
steven [Fri, 23 Mar 2007 23:05:28 +0000 (23:05 +0000)]
* 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.
paolo [Fri, 23 Mar 2007 22:30:18 +0000 (22:30 +0000)]
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.
paolo [Fri, 23 Mar 2007 22:30:09 +0000 (22:30 +0000)]
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.
jsm28 [Fri, 23 Mar 2007 19:44:46 +0000 (19:44 +0000)]
* 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.
andreast [Fri, 23 Mar 2007 19:25:19 +0000 (19:25 +0000)]
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.
rth [Fri, 23 Mar 2007 16:34:51 +0000 (16:34 +0000)]
* config/i386/i386.c: Remove unnecessary function declarations.
Move targetm definition, and all related macros, to the end of
the file. Resort some functions to put definitions before uses.
(ix86_attribute_table): Make static. Move to end of file.
(ix86_gimplify_va_arg): Make static.
gary [Fri, 23 Mar 2007 11:25:46 +0000 (11:25 +0000)]
2007-03-23 Gary Benson <gbenson@redhat.com>
* link.cc (_Jv_Linker::resolve_method_entry):
Ensure that the argument types and the return type of the
found method match those expected by the calling method.
fxcoudert [Fri, 23 Mar 2007 07:00:56 +0000 (07:00 +0000)]
PR fortran/30834
* arith.c (complex_pow): Rewrite to handle large power.
(gfc_arith_power): Handle large power in the real and integer
cases.
* gfortran.dg/integer_exponentiation_3.F90: New test.
* gfortran.dg/integer_exponentiation_4.f90: New test.
* gfortran.dg/integer_exponentiation_5.F90: New test.
rth [Fri, 23 Mar 2007 02:02:38 +0000 (02:02 +0000)]
* config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
don't increase local_regparm with force_align_arg_pointer check.
(ix86_function_sseregparm): Assert 32-bit.
(type_has_variadic_args_p): New.
(ix86_return_pops_args): Early exit for 64-bit. Reindent; use
type_has_variadic_args_p.
(ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
(init_cumulative_args): Remove TARGET_DEBUG_ARG. Remove zero_cum;
use memset instead. Do maybe_vaarg check first; skip attribute
tests if true; skip attribute tests for 64-bit.
(construct_container): Remove TARGET_DEBUG_ARG.
(function_arg_advance_32, function_arg_advance_64): Split out ...
(function_arg_advance): ... from here.
(function_arg_32, function_arg_64): Split out ...
(function_arg): ... from here.
(ix86_pass_by_reference): Tidy.
(ix86_function_value_regno_p): Rearrange w/ switch on regno.
(function_value_32): New, from parts of ix86_function_value
and ix86_value_regno.
(function_value_64): New, from parts of ix86_function_value
and ix86_libcall_value.
(ix86_function_value_1): New.
(ix86_function_value, ix86_libcall_value): Use it.
(return_in_memory_32, return_in_memory_64): Split out ...
(ix86_return_in_memory): ... from here.
(ix86_struct_value_rtx): Skip for 64-bit.
(ix86_libcall_value, ix86_value_regno): Remove.
(setup_incoming_varargs_64): Split out ...
(ix86_setup_incoming_varargs): ... from here.
(ix86_va_start): Remove TARGET_DEBUG_ARG.
(legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
* config/i386/i386-protos.h (ix86_function_value): Remove.
* config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
manu [Thu, 22 Mar 2007 23:04:24 +0000 (23:04 +0000)]
2007-03-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR other/23572
* c-lex.c (interpret_float): On overflow, emit pedantic warning if
infinities not supported, otherwise emit warning if -Woverflow. On
underflow, emit warning if -Woverflow.
* real.c (real_from_string): Return -1 if underflow, +1 if overflow
and 0 otherwise.
* real.h (real_from_string): Update declaration
testsuite/
* gcc.dg/float-range-4.c: New.
* gcc.dg/float-range-1.c: Update. Test for a warning.
* gcc.dg/float-range-3.c: New.
* gcc.dg/float-range-5.c: New.
jsm28 [Thu, 22 Mar 2007 20:38:27 +0000 (20:38 +0000)]
* c-incpath.c (add_sysroot_to_chain): New.
(merge_include_chains): Add sysroot argument. Call
add_sysroot_to_chain if sysrooted.
(register_include_chains): Update call to merge_include_chains.
* doc/cppopts.texi: Document use of '=' in include directory
arguments.
pault [Thu, 22 Mar 2007 18:37:16 +0000 (18:37 +0000)]
2006-03-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31193
* trans-intrinsic.c (gfc_size_in_bytes): Remove function.
(gfc_conv_intrinsic_array_transfer): Remove calls to previous.
Explicitly extract TREE_TYPEs for source and mold. Use these
to calculate length of source and mold, except for characters,
where the se string_length is used. For mold, the TREE_TYPE is
recalculated using gfc_get_character_type_len so that the
result is correctly cast for character literals and substrings.
Do not use gfc_typenode_for_spec for the final cast.
2006-03-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31193
* gfortran.dg/transfer_array_intrinsic_3.f90: New test.
uros [Thu, 22 Mar 2007 14:59:10 +0000 (14:59 +0000)]
* config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
Macroize expander using SSEMODEF mode macro. Use SSE_FLOAT_MODE_P.
(*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
insn pattern using X87MODEF12 mode macro.
uros [Thu, 22 Mar 2007 07:00:08 +0000 (07:00 +0000)]
* testsuite/config/default.exp: New file.
* testsuite/lib/libgomp.exp: New file.
* testsuite/lib/libgomp.dg (load_gcc_lib, libgomp_init,
libgomp_target_compile, libgomp_option_help, libgomp_option_proc,
load_lib *, load_gcc_lib *): Move to libgomp.exp.
(libgomp_load): Remove.
* testsuite/lib/libgomp.exp (libgomp_init): Compute
always_ld_library_path, not ld_library_path. Set additional_flags
to -march=i486 for ilp32 x86_64-*-* and i386-*-* targets.
(target_compile): Do not call libgomp_init. Append lang_library_path
and lang_link_flags to options.
* testsuite/libgomp.c/c.exp: Set DEFAULT_FLAGS to -O2. Set
ld_library_path from always_ld_library_path. Set LD_LIBRARY_PATH
here.
* testsuite/libgomp.c++/c++.exp: Set ld_library_path from
always_ld_library_path. Set LD_LIBRARY_PATH here.
* testsuite/libgomp.fortran/fortran.exp: Ditto.
* testsuite/libgomp.c/atomic-1.c: Set dg-options to
"-O2 -march=pentium" for ilp32 x86 targets. Simplify check for
CX8 flag.
* testsuite/libgomp.c/atomic-2.c: Set dg-options to "-O2 -mcx16" for
lp64 x86 targets. Do not check for SSE3 bit. Do not define bit_SSE3.
* testsuite/libgomp.c/pr29947-1.c: Remove default dg-options.
* testsuite/libgomp.c/pr29947-1.c: Ditto.
* testsuite/libgomp.c/atomic-10.c: Ditto.
mmitchel [Wed, 21 Mar 2007 05:21:31 +0000 (05:21 +0000)]
* config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
* config/arm/arm.c (arm_elf_asm_cdtor): New function.
(arm_elf_asm_constructor): Use it.
(arm_elf_asm_destructor): New function.
bonzini [Tue, 20 Mar 2007 08:31:13 +0000 (08:31 +0000)]
2007-03-19 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/30907
* fwprop.c (forward_propagate_into): Never propagate inside a loop.
(fwprop_init): Always call loop_optimizer_initialize.
(fwprop_done): Always call loop_optimizer_finalize.
(fwprop): We always have loop info now.
(gate_fwprop_addr): Remove.
(pass_fwprop_addr): Use gate_fwprop as gate.
PR rtl-optimization/30841
* df-problems.c (df_ru_local_compute, df_rd_local_compute,
df_chain_alloc): Call df_reorganize_refs unconditionally.
* df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
refs_organized to refs_organized_size.
(df_ref_create_structure): Use refs_organized_size instead of
bitmap_size if refs had been organized, and keep refs_organized_size
up-to-date.
* df.h (struct df_ref_info): Change refs_organized to
refs_organized_size.
(DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
bitmap_size.
matz [Mon, 19 Mar 2007 17:07:29 +0000 (17:07 +0000)]
* builtins.c (expand_builtin_sync_operation,
expand_builtin_compare_and_swap,
expand_builtin_lock_test_and_set): Care for extending CONST_INTs
correctly.
* config/i386/sync.md (sync_double_compare_and_swapdi_pic,
sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
for operand 3.
paolo [Mon, 19 Mar 2007 16:58:54 +0000 (16:58 +0000)]
2007-03-19 Paolo Carlini <pcarlini@suse.de>
* include/tr1/tuple (get(_Tuple_impl<>&, get(const _Tuple_impl<>&):
Rename as __get_helper.
(get(tuple<>&, get(const tuple<>&)): Forward to the latter.
rguenth [Mon, 19 Mar 2007 13:36:29 +0000 (13:36 +0000)]
2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
Richard Guenther <rguenther@suse.de>
PR tree-optimization/31254
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
Use handled_component_p () where appropriate. Continue
propagating into the rhs if we propagated into an INDIRECT_REF
on the lhs.
krebbel [Mon, 19 Mar 2007 08:48:36 +0000 (08:48 +0000)]
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
(op_type attribute): RRF instruction type added.
(fT0): New mode attribute.
("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
"*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
* config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
no secondary memory is needed when moving DFmode values between GPRs
and FPRs.
krebbel [Mon, 19 Mar 2007 08:46:57 +0000 (08:46 +0000)]
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
inverted and documentation adjusted.
("mhard-dfp", "msoft-dfp"): New options.
* config/s390/s390.c (s390_handle_arch_option): New architecture
switch: z9-ec.
(override_options): Sanity checks for the new options added.
* config.gcc: New architecture switch: z9-ec.
* config/s390/s390.h (processor_flags): PF_DFP added.
(TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
(TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
when the bit is NOT set so remove it from the defaults.
danglin [Sun, 18 Mar 2007 19:47:43 +0000 (19:47 +0000)]
* pa.md: Add fpstore_load and store_fpload instruction types. Provide
reservation, bypass and anti-bypass descriptions for these instructions.
Update move patterns.
* pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
TYPE_FPSTORE.