re PR rtl-optimization/40956 (Constants are never candidates for hoisting)
PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcse.c (compute_code_hoist_vbeinout): Consider more expressions for hoisting. (hoist_code): Count occurences in current block too. From-SVN: r162590
This commit is contained in:
parent
2016034718
commit
ce4c0015a1
@ -1,3 +1,12 @@
|
||||
2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
|
||||
|
||||
PR rtl-optimization/40956
|
||||
PR target/42495
|
||||
PR middle-end/42574
|
||||
* gcse.c (compute_code_hoist_vbeinout): Consider more expressions
|
||||
for hoisting.
|
||||
(hoist_code): Count occurences in current block too.
|
||||
|
||||
2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
|
||||
|
||||
* gcse.c (struct expr:max_distance): New field.
|
||||
|
16
gcc/gcse.c
16
gcc/gcse.c
@ -4247,8 +4247,15 @@ compute_code_hoist_vbeinout (void)
|
||||
FOR_EACH_BB_REVERSE (bb)
|
||||
{
|
||||
if (bb->next_bb != EXIT_BLOCK_PTR)
|
||||
sbitmap_intersection_of_succs (hoist_vbeout[bb->index],
|
||||
hoist_vbein, bb->index);
|
||||
{
|
||||
sbitmap_intersection_of_succs (hoist_vbeout[bb->index],
|
||||
hoist_vbein, bb->index);
|
||||
|
||||
/* Include expressions in VBEout that are calculated
|
||||
in BB and available at its end. */
|
||||
sbitmap_a_or_b (hoist_vbeout[bb->index],
|
||||
hoist_vbeout[bb->index], comp[bb->index]);
|
||||
}
|
||||
|
||||
changed |= sbitmap_a_or_b_and_c_cg (hoist_vbein[bb->index],
|
||||
antloc[bb->index],
|
||||
@ -4430,6 +4437,11 @@ hoist_code (void)
|
||||
|
||||
if (TEST_BIT (hoist_vbeout[bb->index], i))
|
||||
{
|
||||
/* If an expression is computed in BB and is available at end of
|
||||
BB, hoist all occurences dominated by BB to BB. */
|
||||
if (TEST_BIT (comp[bb->index], i))
|
||||
hoistable++;
|
||||
|
||||
/* We've found a potentially hoistable expression, now
|
||||
we look at every block BB dominates to see if it
|
||||
computes the expression. */
|
||||
|
Loading…
Reference in New Issue
Block a user