Jakub Jelinek [Fri, 24 Sep 2010 15:07:36 +0000 (17:07 +0200)]
Revert:
2010-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/45234
* calls.c (expand_call): Make sure that all variable sized
adjustments are multiple of preferred stack boundary after
stack alignment.
Eric Botcazou [Thu, 23 Sep 2010 13:07:01 +0000 (13:07 +0000)]
re PR middle-end/44763 (SEGV in allocno_priority_compare_func on Solaris 8)
PR middle-end/44763
* ira-color.c (SORTGT): New macro, helper for qsort callbacks.
(allocno_priority_compare_func): Use it instead of a straight
difference computation over priorities.
Jakub Jelinek [Thu, 23 Sep 2010 07:41:30 +0000 (09:41 +0200)]
re PR rtl-optimization/45728 (ICE: in gen_lowpart_general, at rtlhooks.c:59 at -O1 when comparing union members)
PR rtl-optimization/45728
* expr.c (expand_expr_real_1): If op0 isn't REG or MEM, try
gen_lowpart_common first and if that fails, force_reg first
before calling gen_lowpart.
Jakub Jelinek [Tue, 21 Sep 2010 16:30:21 +0000 (18:30 +0200)]
re PR rtl-optimization/45678 (crash on vector code with -m32 -msse)
PR middle-end/45678
* expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: If
op0 isn't sufficiently aligned and there is movmisalignM
insn for mode, use it to load op0 into a temporary register.
Backport from mainline
2010-09-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/45678
* cfgexpand.c (expand_one_stack_var_at): Limit alignment to
crtl->max_used_stack_slot_alignment.
Backport from mainline
2010-09-17 Richard Guenther <rguenther@suse.de>
H.J. Lu <hongjiu.lu@intel.com>
H.J. Lu [Mon, 20 Sep 2010 20:32:41 +0000 (20:32 +0000)]
Make sure that all variable sized adjustments are multiple of preferred
stack boundary after stack alignment.
gcc/
2010-09-20 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline
2010-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/45234
* calls.c (expand_call): Make sure that all variable sized
adjustments are multiple of preferred stack boundary after
stack alignment.
gcc/testsuite/
2010-09-20 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline
2010-09-17 H.J. Lu <hongjiu.lu@intel.com>
backport: 14220.cc: XFAIL on Solaris 9/x86, 32-bit Solaris 10/x86 and 64-bit Solaris 10/SPARC.
Backport from mainline:
2010-07-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* testsuite/22_locale/num_put/put/char/14220.cc: XFAIL on Solaris
9/x86, 32-bit Solaris 10/x86 and 64-bit Solaris 10/SPARC.
* testsuite/22_locale/num_put/put/wchar_t/14220.cc: XFAIL on
Solaris 9/x86 and 32-bit Solaris 10/x86.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
Only XFAIL on Solaris 8 and 9.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc:
Likewise.
* testsuite/ext/enc_filebuf/char/13598.cc: XFAIL before Solaris 11.
* lib/target-supports.exp
(check_effective_target_run_expensive_tests): New proc.
* gcc.c-torture/compile/limits-fnargs.c: Use
dg-require-effective-target run_expensive_tests.
backport: re PR rtl-optimization/44919 (ICE on ia64 with -O3 at sel-sched.c:4672)
Backport from mainline
2010-09-06 Andrey Belevantsev <abel@ispras.ru>
PR rtl-optimization/44919
* sel-sched.c (move_cond_jump): Remove assert, check that
the several blocks case can only happen with mutually exclusive
insns instead. Rewrite the movement code to support moving through
several basic blocks.
re PR middle-end/40386 (wrong code generation for several SPEC CPU2000 benchmarks (lucas, mgrid, face, applu, apsi) with -O1 -fno-ira-share-spill-slots)
2010-09-08 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/40386
* ira.c (pseudo_for_reload_consideration_p): Don't use
flag_ira_share_spill_slots.
2010-09-08 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/40386
* gcc.c-torture/execute/{pr40386.c,pr40386.x}: New testcase.
Eric Botcazou [Wed, 1 Sep 2010 12:24:35 +0000 (12:24 +0000)]
backport: re PR rtl-optimization/45353 (ICE: RTL check: expected elt 3 type 'B', have '0' (rtx barrier) in sel_bb_head, at sel-sched-ir.c:4329 with -fselective-scheduling and __builtin_unreachable())
Backport from mainline
2010-08-20 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/45353
* sel-sched-ir.c (sel_bb_head): Return NULL even if next_nonnote_insn
after bb_note is a BARRIER.
backport: sel-sched.c (compute_av_set_at_bb_end): Do not test that number of all successors is the same as number of successors...
Backport from mainline:
* sel-sched.c (compute_av_set_at_bb_end): Do not test that number of
all successors is the same as number of successors in current region.
backport: sel-sched.c (mark_unavailable_hard_regs): Do not try to search available registers when failed to discover LHS register class.
Backport from mainline:
2010-01-14 Alexander Monakov <amonakov@ispras.ru>
* sel-sched.c (mark_unavailable_hard_regs): Do not try to search
available registers when failed to discover LHS register class.
Fix indentation. Update comment.
backport: re PR rtl-optimization/42389 (ICE in advance_state_on_fence with sel-schd for 175.vpr)
Backport from mainline:
PR rtl-optimization/42389
* sel-sched.c (advance_one_cycle): Set FENCE_ISSUE_MORE
to can_issue_more.
(advance_state_on_fence): Likewise.
(sel_target_adjust_priority): Print debug output only when
sched_verbose >= 4, not 2.
(get_expr_cost): Do not issue all unique insns on the next cycle.
(fill_insns): Initialize can_issue_more from the value saved
with the fence.
* sel-sched-ir.c (flist_add): New parameter issue_more.
Init FENCE_ISSUE_MORE with it.
(merge_fences): Likewise.
(init_fences): Update call to flist_add.
(add_to_fences, add_clean_fence_to_fences)
(add_dirty_fence_to_fences): Likewise.
(move_fence_to_fences): Update call to merge_fences.
(invoke_reorder_hooks): Do not reset can_issue_more on insns from
sched groups.
* sel-sched-ir.h (struct _fence): New field issue_more.
(FENCE_ISSUE_MORE): New accessor macro.
backport: re PR rtl-optimization/42388 (ICE in move_bb_info with sel-sched and modulo-sched for 176.gcc)
Backport from mainline:
PR rtl-optimization/42388
* sel-sched-ir.c (maybe_tidy_empty_bb): Do not delete empty blocks
that have no predecessors nor successors. Do not call move_bb_info
for empty blocks outside of current region.
backport: re PR rtl-optimization/39453 (ICE : in init_seqno, at sel-sched.c:6433)
Backport from mainline:
2010-01-14 Alexander Monakov <amonakov@ispras.ru>
PR rtl-optimization/39453
PR rtl-optimization/42246
* sel-sched-ir.c (considered_for_pipelining_p): Do not test
for pipelining_p.
(sel_add_loop_preheaders): Add preheader to last_added_blocks.
backport: re PR middle-end/42245 (ICE in verify_backedges for 197.parser with sel-sched)
Backport from mainline:
2010-01-14 Andrey Belevantsev <abel@ispras.ru>
Alexander Monakov <amonakov@ispras.ru>
PR middle-end/42245
* sel-sched-ir.c (sel_recompute_toporder): New. Use it...
(maybe_tidy_empty_bb): ... here. Make static. Add new
argument. Update all callers.
(tidy_control_flow): ... and here. Recompute topological order
of basic blocks in region if necessary.
(sel_redirect_edge_and_branch): Change return type. Return true
if topological order might have been invalidated.
(purge_empty_blocks): Export and move from...
* sel-sched.c (purge_empty_blocks): ... here.
* sel-sched-ir.h (sel_redirect_edge_and_branch): Update prototype.
(maybe_tidy_empty_bb): Delete prototype.
(purge_empty_blocks): Declare.
backport: re PR rtl-optimization/42294 (ICE in code_motion_path_driver for 416.gamess)
Backport from mainline:
PR rtl-optimization/42294
* sel-sched.c (try_replace_dest_reg): When chosen register
and original register is the same, do not bail out early, but
still check all original insns for validity of replacing destination
register. Set EXPR_TARGET_AVAILABLE to 1 before leaving function
in this case.
backport: re PR rtl-optimization/41697 (ICE on gcc.c-torture/compile/20090917-1.c)
Backport from mainline:
PR rtl-optimization/41697
* sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
a conditional jump has a single successor.
backport: sched-deps.c (init_deps): New parameter lazy_reg_last.
Backport from mainline:
2009-11-13 Andrey Belevantsev <abel@ispras.ru>
* sched-deps.c (init_deps): New parameter lazy_reg_last. Don't
allocate reg_last when in case lazy_reg_last is true.
(init_deps_reg_last): New.
(free_deps): When max_reg is 0, this context is already freed.
* sched-int.h (init_deps_reg_last): Export.
(init_deps): Update prototype.
* sched-ebb.c (schedule_ebb): Update the call to init_deps.
* sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
* ddg.c (build_intra_loop_deps): Likewise.
* sel-sched-ir.c (copy_deps_context, create_deps_context,
reset_deps_context, deps_init_id): Likewise.
(init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
(free_data_for_scheduled_insn): New, break down from ...
(free_first_time_insn_data): ... here.
(has_dependence_p): Allocate reg_last now, when it is needed.
(extend_insn_data): When maximal LUID is big enough, allocate
per-insn data in smaller chunks.
* sel-sched-ir.h (free_data_for_scheduled_insn): Export.
* sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
in scheduled insn.
backport: re PR rtl-optimization/40101 (200.sixtrack ICEs in get_seqno_by_preds, at sel-sched-ir.c:3752)
Backport from mainline:
PR rtl-optimization/40101
* sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
seqno. Adjust comment.
* sel-sched.c (find_seqno_for_bookkeeping): Assert that when
inserting bookkeeping before a jump, the jump is not scheduled.
When no positive seqno found, provide a value. Add comment.
2009-04-28 Alexander Monakov <amonakov@ispras.ru>
* gcc.target/ia64/20071210-2.c: New testcase.
gcc/Changelog:
2009-04-28 Alexander Monakov <amonakov@ispras.ru>
* sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
block if there are complex incoming edges.
(sel_merge_blocks): Remove useless assert.
(sel_redirect_edge_and_branch): Check that edge was redirected.
* sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
(sel_find_rgns): Delete declaration.
* sel-sched.c (purge_empty_blocks): Attempt to remove first block of
the region when it is not a preheader.