Mercurial > hg > truffle
diff src/share/vm/opto/addnode.cpp @ 99:8a4ef4e001d3
6680594: Load + Load isn't canonicalized leading to missed GVN opportunities
Reviewed-by: kvn, jrose
author | never |
---|---|
date | Fri, 28 Mar 2008 09:00:39 -0700 |
parents | 4d428c5b4cb3 |
children | d1605aabd0a1 |
line wrap: on
line diff
--- a/src/share/vm/opto/addnode.cpp Wed Mar 26 12:25:06 2008 -0700 +++ b/src/share/vm/opto/addnode.cpp Fri Mar 28 09:00:39 2008 -0700 @@ -70,9 +70,14 @@ // Convert "Load+x" into "x+Load". // Now check for loads - if( in2->is_Load() ) return false; - // Left is a Load and Right is not; move it right. - if( in1->is_Load() ) { + 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. add->swap_edges(1, 2); return true; }