src/share/vm/opto/subnode.cpp

changeset 835
cc80376deb0c
parent 731
ce93a51457ae
child 1103
90a66aa50514
     1.1 --- a/src/share/vm/opto/subnode.cpp	Tue Sep 30 15:53:55 2008 -0700
     1.2 +++ b/src/share/vm/opto/subnode.cpp	Thu Oct 02 08:37:44 2008 -0700
     1.3 @@ -206,6 +206,14 @@
     1.4    if( op1 == Op_AddI && op2 == Op_AddI && in1->in(2) == in2->in(2) )
     1.5      return new (phase->C, 3) SubINode( in1->in(1), in2->in(1) );
     1.6  
     1.7 +  // Convert "(A+X) - (X+B)" into "A - B"
     1.8 +  if( op1 == Op_AddI && op2 == Op_AddI && in1->in(2) == in2->in(1) )
     1.9 +    return new (phase->C, 3) SubINode( in1->in(1), in2->in(2) );
    1.10 +
    1.11 +  // Convert "(X+A) - (B+X)" into "A - B"
    1.12 +  if( op1 == Op_AddI && op2 == Op_AddI && in1->in(1) == in2->in(2) )
    1.13 +    return new (phase->C, 3) SubINode( in1->in(2), in2->in(1) );
    1.14 +
    1.15    // Convert "A-(B-C)" into (A+C)-B", since add is commutative and generally
    1.16    // nicer to optimize than subtract.
    1.17    if( op2 == Op_SubI && in2->outcnt() == 1) {

mercurial