diff options
author | Richard Henderson <rth@redhat.com> | 2014-06-30 13:14:42 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2014-06-30 13:14:42 -0700 |
commit | fc56f9d2843266a0d38f52b44ca5343604fccc2f (patch) | |
tree | 175c0fc497121c92660a49b3a816d2a4d4d565f2 /gcc/bb-reorder.c | |
parent | a4a51a5262b8a12475fd7811dac3fd05f02886ce (diff) | |
download | gcc-fc56f9d2843266a0d38f52b44ca5343604fccc2f.tar.gz |
re PR rtl-optimization/61608 (FAIL: gcc.target/arm/epilog-1.c scan-assembler tests)
PR rtl-opt/61608
PR target/39284
* bb-reorder.c (pass_duplicate_computed_gotos::execute): Cleanup
the cfg if there were any changes.
* passes.def: Revert move of peephole2 after reorder_blocks;
move duplicate_computed_gotos before peephole2.
From-SVN: r212172
Diffstat (limited to 'gcc/bb-reorder.c')
-rw-r--r-- | gcc/bb-reorder.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 61b0caba8b8..cd68fee4d77 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -2520,13 +2520,20 @@ pass_duplicate_computed_gotos::execute (function *fun) changed = true; } -done: - /* Duplicating blocks above will redirect edges and may cause hot blocks - previously reached by both hot and cold blocks to become dominated only - by cold blocks. */ + done: if (changed) - fixup_partitions (); - cfg_layout_finalize (); + { + /* Duplicating blocks above will redirect edges and may cause hot + blocks previously reached by both hot and cold blocks to become + dominated only by cold blocks. */ + fixup_partitions (); + + /* Merge the duplicated blocks into predecessors, when possible. */ + cfg_layout_finalize (); + cleanup_cfg (0); + } + else + cfg_layout_finalize (); BITMAP_FREE (candidates); return 0; |