6680594: Load + Load isn't canonicalized leading to missed GVN opportunities

Reviewed-by: kvn, jrose
This commit is contained in:
Tom Rodriguez 2008-03-28 09:00:39 -07:00
parent 50bc5573a8
commit 0530e0d854

View file

@ -70,9 +70,14 @@ static bool commute( Node *add, int con_left, int con_right ) {
// Convert "Load+x" into "x+Load".
// Now check for loads
if( in2->is_Load() ) return false;
if (in2->is_Load()) {
if (!in1->is_Load()) {
// already x+Load to return
return false;
}
// both are loads, so fall through to sort inputs by idx
} else if( in1->is_Load() ) {
// Left is a Load and Right is not; move it right.
if( in1->is_Load() ) {
add->swap_edges(1, 2);
return true;
}