diff options
author | Richard Henderson <rth@redhat.com> | 2012-06-09 09:27:52 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2012-06-09 09:27:52 -0700 |
commit | 11a687e750e810ac085dfda840ce10f73ee2ce81 (patch) | |
tree | 55f5584472a05a0e58bdd1b98b62d88b9b689b18 /gcc/combine-stack-adj.c | |
parent | aef2b1d1f03eacdad6ec5fac97a04eea7cc68174 (diff) | |
download | gcc-11a687e750e810ac085dfda840ce10f73ee2ce81.zip gcc-11a687e750e810ac085dfda840ce10f73ee2ce81.tar.gz gcc-11a687e750e810ac085dfda840ce10f73ee2ce81.tar.bz2 |
re PR c++/53602 (Libre Office causes an internal compiler error)
PR c++/53602
* cfgcleanup.c (execute_jump): Rename from rest_of_handle_jump2.
(pass_jump): Rename from pass_jump2.
(execute_jump2, pass_jump2): New.
* combine-stack-adj.c (rest_of_handle_stack_adjustments): Don't
perform cfg cleanup here. Move the test of PUSH_ROUNDING
and ACCUMULATE_OUTGOING_ARGS test...
(gate_handle_stack_adjustments): ... here.
* passes.c (init_optimization_passes): Update for pass_jump2 rename.
Place new pass_jump2 after pass_stack_adjustments.
* tree-pass.h (pass_jump): Declare.
From-SVN: r188360
Diffstat (limited to 'gcc/combine-stack-adj.c')
-rw-r--r-- | gcc/combine-stack-adj.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c index b46fe3b..65e8f04 100644 --- a/gcc/combine-stack-adj.c +++ b/gcc/combine-stack-adj.c @@ -626,26 +626,23 @@ combine_stack_adjustments_for_block (basic_block bb) static bool gate_handle_stack_adjustments (void) { - return flag_combine_stack_adjustments; -} - -static unsigned int -rest_of_handle_stack_adjustments (void) -{ - cleanup_cfg (flag_crossjumping ? CLEANUP_CROSSJUMP : 0); - /* This is kind of a heuristic. We need to run combine_stack_adjustments even for machines with possibly nonzero TARGET_RETURN_POPS_ARGS and ACCUMULATE_OUTGOING_ARGS. We expect that only ports having push instructions will have popping returns. */ #ifndef PUSH_ROUNDING - if (!ACCUMULATE_OUTGOING_ARGS) + if (ACCUMULATE_OUTGOING_ARGS) + return false; #endif - { - df_note_add_problem (); - df_analyze (); - combine_stack_adjustments (); - } + return flag_combine_stack_adjustments; +} + +static unsigned int +rest_of_handle_stack_adjustments (void) +{ + df_note_add_problem (); + df_analyze (); + combine_stack_adjustments (); return 0; } |