Summary: | Tail call jumps not threaded | ||
---|---|---|---|
Product: | gcc | Reporter: | Steven Bosscher <steven> |
Component: | middle-end | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gabravier, jakub |
Priority: | P3 | ||
Version: | 4.8.0 | ||
Target Milestone: | --- | ||
See Also: | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41004 | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
Steven Bosscher
2012-08-24 11:39:27 UTC
It often isn't just a jump, in many cases it is a lot of insns, to restore stack, etc. You don't know that until prologues/epilogues are expanded. With -O2 this is cleaned up by bb-reorder. Author: amker Date: Wed Sep 19 07:40:15 2012 New Revision: 191462 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=191462 Log: PR middle-end/54364 * bb-reorder.c (connect_better_edge_p): New added. (find_traces_1_round): When optimizing for size, ignore edge frequency and probability, and handle all in one round. (bb_to_key): Use bb->index as key when optimizing for size. (better_edge_p): The bb with smaller index is better when optimizing for size. (connect_traces): When optimizing for size, connect block n with block n + 1; connect trace m with trace m + 1 if falling through. (gate_handle_reorder_blocks): Enable bbro when optimizing for -Os. Modified: trunk/gcc/ChangeLog trunk/gcc/bb-reorder.c Author: xguo Date: Wed Sep 26 03:17:54 2012 New Revision: 191751 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=191751 Log: 2012-09-26 Zhenqiang Chen <zhenqiang.chen@arm.com> Backport from 2012-09-19 mainline r191462 PR middle-end/54364 * bb-reorder.c (connect_better_edge_p): New added. (find_traces_1_round): When optimizing for size, ignore edge frequency and probability, and handle all in one round. (bb_to_key): Use bb->index as key when optimizing for size. (better_edge_p): The bb with smaller index is better when optimizing for size. (connect_traces): When optimizing for size, connect block n with block n + 1; connect trace m with trace m + 1 if falling through. (gate_handle_reorder_blocks): Enable bbro when optimizing for -Os. Modified: branches/ARM/embedded-4_7-branch/gcc/ChangeLog.arm branches/ARM/embedded-4_7-branch/gcc/bb-reorder.c |