Sebastian Pop [Tue, 25 Jan 2011 06:47:21 +0000 (06:47 +0000)]
Allow several reductions in a reduction PBB.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
* graphite-dependences.c (reduction_dr_1): Allow several reductions
in a reduction PBB.
* graphite-sese-to-poly.c (split_reduction_stmt): Do not split PBBs
that have already been marked as PBB_IS_REDUCTION.
Sebastian Pop [Tue, 25 Jan 2011 06:46:56 +0000 (06:46 +0000)]
Relax the definition of same_pdr_p.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
* graphite-dependences.c (new_poly_ddr): Call same_pdr_p.
* graphite-poly.h (same_pdr_p): Do not expect that the PDR_TYPE
of both data references to be the same.
Sebastian Pop [Tue, 25 Jan 2011 06:46:19 +0000 (06:46 +0000)]
Expect at least the version 0.11 of PPL.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
toplev/
* configure: Regenerated.
* configure.ac: Check for version 0.11 (or later revision) of PPL.
toplev/gcc/
* doc/install.texi: Update the expected version number of PPL to 0.11.
* graphite-ppl.c (ppl_powerset_is_empty): Remove now dead code under
#if PPL_VERSION_MINOR < 11.
Sebastian Pop [Tue, 25 Jan 2011 06:45:04 +0000 (06:45 +0000)]
Test the profitability of interchange on the perfect nest.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
* graphite-interchange.c (lst_interchange_profitable_p): Takes a loop
nest and two loop depths as parameters.
(lst_try_interchange_loops): Call lst_interchange_profitable_p after
lst_perfect_nestify.
Jan Hubicka [Mon, 24 Jan 2011 23:07:25 +0000 (00:07 +0100)]
re PR c/21659 ([unit-at-a-time] "weak declaration must precede definition" error missing at >= O1)
PR c/21659
* doc/extend.texi (weak pragma): Drop claim that it must
appear before definition.
* varasm.c (merge_weak, declare_weak): Only sanity check
that DECL is not output at a time it is declared weak.
H.J. Lu [Mon, 24 Jan 2011 17:29:58 +0000 (17:29 +0000)]
Visit basic blocks using the work-list based algorithm.
2011-01-24 H.J. Lu <hongjiu.lu@intel.com>
PR target/46519
* config/i386/i386.c: Include sbitmap.h and fibheap.h.
(block_info): Add scanned and prev.
(move_or_delete_vzeroupper_2): Return if the basic block
has been scanned and the upper 128bit state is unchanged
from the last scan.
(move_or_delete_vzeroupper_1): Return true if the exit
state is changed.
(move_or_delete_vzeroupper): Visit basic blocks using the
work-list based algorithm based on vt_find_locations in
var-tracking.c.
* config/i386/t-i386: Also depend on sbitmap.h and $(FIBHEAP_H).
Johannes Singler [Mon, 24 Jan 2011 17:07:35 +0000 (17:07 +0000)]
re PR libstdc++/47433 (libstdc++ parallel mode calls std::swap explicitely)
2011-01-24 Johannes Singler <singler@kit.edu>
PR libstdc++/47433
* include/parallel/losertree.h
(_LoserTree<>::__delete_min_insert):
Do not qualify swap with std:: for value type,
but include a using directive instead.
(_LoserTreeUnguarded<>::__delete_min_insert): Likewise.
* include/parallel/balanced_quicksort.h (__qsb_divide):
Use std::iter_swap instead of std::swap.
(__qsb_local_sort_with_helping): Likewise.
* include/parallel/partition.h (__parallel_partition):
Likewise. (__parallel_nth_element): Likewise.
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.