Nick Clifton [Mon, 24 Jan 2011 17:00:28 +0000 (17:00 +0000)]
v850.opt (mv850es): New option - alias for -mv850e1.
* config/v850/v850.opt (mv850es): New option - alias for -mv850e1.
* config/v850/v850.h (ASM_SPEC): If -mv850es is specified pass
-mv850e1 to the assembler. If -mv850e1 or -mv850es is specified
then define __v850e1__.
* doc/invoke.texi: Document -mv850es.
It turns out that the middle-end will happily take care of
doing the swapping and splitting of compound fp comparisons.
No need for us to replicate that here.
Bernd Schmidt [Sun, 23 Jan 2011 21:11:24 +0000 (21:11 +0000)]
re PR rtl-optimization/47166 (SpecCpu2000 Ammp segfaults for ARM with -O3 -mthumb)
PR rtl-optimization/47166
* reload1.c (emit_reload_insns): Disable the spill_reg_store
mechanism for PRE_MODIFY and POST_MODIFY.
(inc_for_reload): For PRE_MODIFY, return the insn that sets the
reloadreg.
Co-Authored-By: Richard Sandiford <rdsandiford@googlemail.com>
From-SVN: r169144
Ira Rosen [Sun, 23 Jan 2011 08:20:22 +0000 (08:20 +0000)]
costmodel-vect-33.c: Expect vectorization to be not profitable if...
* gcc.dg/vect/costmodel/spu/costmodel-vect-33.c: Expect
vectorization to be not profitable if peeling is used
to realign the memory access.
* gcc.dg/vect/costmodel/spu/costmodel-vect-76a.c:
Increase loop bound to avoid loop unrolling.
* gcc.dg/vect/costmodel/spu/costmodel-vect-76c.c:
Likewise.
Ulrich Weigand [Sat, 22 Jan 2011 21:24:54 +0000 (21:24 +0000)]
re PR middle-end/47401 (Support for must-not-throw regions with SJLJ exceptions broken)
PR middle-end/47401
* except.c (sjlj_assign_call_site_values): Move setting the
crtl->uses_eh_lsda flag to ...
(sjlj_mark_call_sites): ... here.
(sjlj_emit_function_enter): Support NULL dispatch label.
(sjlj_build_landing_pads): In a function with no landing pads
that still has must-not-throw regions, generate code to register
a personality function with empty LSDA.
Thomas Koenig [Sat, 22 Jan 2011 17:30:22 +0000 (17:30 +0000)]
re PR fortran/38536 (ICE with C_LOC in resolve.c due to not properly going through expr->ref)
2011-01-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/38536
* resolve.c (gfc_iso_c_func_interface): For C_LOC,
check for array sections followed by component references
which are illegal. Also check for coindexed arguments.
2011-01-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/38536
* gfortran.dg/c_loc_tests_16.f90: New test.
Nick Clifton [Sat, 22 Jan 2011 16:05:49 +0000 (16:05 +0000)]
rx.md (UNSPEC_CONST): New.
* config/rx/rx.md (UNSPEC_CONST): New.
(deallocate_and_return): Wrap the amount popped off the stack in
an UNSPEC_CONST in order to stop it being rejected by
-mmax-constant-size.
(pop_and_return): Add a "(return)" rtx.
(call): Drop the immediate operand.
(call_internal): Likewise.
(call_value): Likewise.
(call_value_internal): Likewise.
(sibcall_internal): Likewise.
(sibcall_value_internal): Likewise.
(sibcall): Likewise. Generate an explicit call using
sibcall_internal.
(sibcall_value): Likewise.
(mov<>): FAIL if a constant operand is not legitimate.
(addsi3_unpsec): New pattern.
* config/rx/rx.c (rx_print_operand_address): Handle UNPSEC
CONSTs.
(ok_for_max_constant): New function.
(gen_safe_add): New function.
(rx_expand_prologue): Use gen_safe_add.
(rx_expand_epilogue): Likewise.
(rx_is_legitimate_constant): Use ok_for_max_constant. Handle
UNSPEC CONSTs.
Jeff Law [Sat, 22 Jan 2011 04:09:44 +0000 (21:09 -0700)]
re PR tree-optimization/47053 (ICE: verify_flow_info failed: BB 2 can not throw but has an EH edge with -O -fnon-call-exceptions)
PR tree-optimization/47053
* tree-ssa-dse.c (need_eh_cleanup): New bitmap.
(dse_optimize_stmt): Set the appropriate bit in NEED_EH_CLEANUP when
statements are deleted.
(tree_ssa_dse): Allocate & free NEED_EH_CLEANUP. If NEED_EH_CLEANUP
is nonempty, then purge dead edges and cleanup the CFG.
PR tree-optimization/47053
* g++.dg/pr47053.C: New test.
Tobias Burnus [Fri, 21 Jan 2011 20:33:10 +0000 (21:33 +0100)]
re PR fortran/47394 (Internal compiler error when error count limit is reached)
2011-01-21 Tobias Burnus <burnus@net-b.de>
PR fortran/47394
* error.c (gfc_error_now, gfc_fatal_error, gfc_error_check):
Use defined instead of magic number exit status codes.
* scanner.c (include_line, gfc_new_file): Ditto.
Jakub Jelinek [Fri, 21 Jan 2011 19:35:42 +0000 (20:35 +0100)]
re PR middle-end/45566 (ICE: in convert_to_eh_region_ranges, at except.c:2446 with -freorder-blocks-and-partition -fnon-call-exceptions -fprofile-use)
PR middle-end/45566
* except.c (convert_to_eh_region_ranges): Emit queued no-region
notes from other section in hot/cold partitioning even if
last_action is -3. Increment call_site_base.
Jakub Jelinek [Fri, 21 Jan 2011 19:34:03 +0000 (20:34 +0100)]
re PR rtl-optimization/47366 (ICE: verify_flow_info failed: missing REG_EH_REGION note in the end of bb 3 with -fnon-call-exceptions -fno-tree-ccp -fno-tree-forwprop)
PR rtl-optimization/47366
* fwprop.c (forward_propagate_into): Return bool. If
any changes are made, -fnon-call-exceptions is used and
REG_EH_REGION note is present, call purge_dead_edges
and return true if it purged anything.
(fwprop_addr): Adjust callers, call cleanup_cfg (0) if
any EH edges were purged.
Jeff Law [Fri, 21 Jan 2011 16:49:31 +0000 (09:49 -0700)]
re PR rtl-optimization/41619 (ICE in insert_save (caller-save.c) for SPEC CPU2000's 252.eon)
PR rtl-optimization/41619
* caller-save.c (setup_save_areas): Break out code to determine
which hard regs are live across calls by examining the reload chains
so that it is always used.
Eliminate code which checked REG_N_CALLS_CROSSED.
Alexandre Oliva [Fri, 21 Jan 2011 14:57:33 +0000 (14:57 +0000)]
re PR debug/47106 (-fcompare-debug failure (length) with -fpartial-inlining -flto -fconserve-stack)
PR debug/47106
* cfgexpand.c (account_used_vars_for_block): Only account vars
that are annotated as used.
(estimated_stack_frame_size): Don't set TREE_USED.
* tree-dfa.c (create_var_ann): Mark variable as used.
Anatoly Sokolov [Thu, 20 Jan 2011 17:37:13 +0000 (20:37 +0300)]
xtensa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove.
* config/xtensa/xtensa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove.
* config/xtensa/xtensa-protos.h (constantpool_address_p): Remove.
* config/xtensa/xtensa.c (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
(xtensa_mode_dependent_address_p): New function.
(constantpool_address_p): Make static. Change return type to bool.
Change argument type to const_rtx. Use CONST_INT_P predicate.
Jakub Jelinek [Thu, 20 Jan 2011 12:02:33 +0000 (13:02 +0100)]
re PR tree-optimization/46130 (ICE: SIGSEGV in walk_stmt_load_store_addr_ops (gimple.c:4894) with -O2 -fno-tree-dce)
PR tree-optimization/46130
* ipa-split.c (consider_split): If return_bb contains non-virtual
PHIs other than for retval or if split_function would not adjust it,
refuse to split.
* gcc.dg/pr46130-1.c: New test.
* gcc.dg/pr46130-2.c: New test.
Dodji Seketeli [Wed, 19 Jan 2011 22:57:47 +0000 (22:57 +0000)]
re PR c++/47291 (ICE: SIGSEGV in size_binop_loc (fold-const.c:1427) with -g)
Fix PR c++/47291
gcc/
PR c++/47291
* dwarf2out.c (generic_type_p, schedule_generic_params_dies_gen)
(gen_scheduled_generic_parms_dies): New functions.
(gen_struct_or_union_type_die): Schedule template parameters DIEs
generation for the end of CU compilation.
(dwarf2out_finish): Generate template parameters DIEs here.
gcc/testsuite/
PR c++/47291
* g++.dg/debug/dwarf2/template-params-10.C: New test.
Now that we properly track the life of MDR, we can emit
the RETF instruction if MDR has not been modified. This
insn is 3-4 cycles faster since the return address is
already loaded.
There's little reason to greatly complicate things by splitting
the pic_load patterns and using complex rtl to make it work out.
Instead, use the %= marker to generate unique numbers and emit
the entire load_pic sequence at once.
At the same time, collect all references to outgoing_args_size
into mn10300_frame_size, and all computations of register save
area size into mn10300_initial_offset.
For addition and logicals, define an operation-plus-flags update pattern
in preparation for compare elimination. In addition, clean up the way
we compare and validate CC_MODEs. Define NEG in terms of NOT; this is
smaller and allows a non-clobbering destination alternative.