hotspot/src/share/vm/opto/subnode.cpp
changeset 1432 44f076e3d2a4
parent 1058 52be2dbbdc79
child 2335 e1965d139bb7
equal deleted inserted replaced
1404:4a969f79e3e6 1432:44f076e3d2a4
   203     return new (phase->C, 3) SubINode( in1->in(2), in2->in(2) );
   203     return new (phase->C, 3) SubINode( in1->in(2), in2->in(2) );
   204 
   204 
   205   // Convert "(A+X) - (B+X)" into "A - B"
   205   // Convert "(A+X) - (B+X)" into "A - B"
   206   if( op1 == Op_AddI && op2 == Op_AddI && in1->in(2) == in2->in(2) )
   206   if( op1 == Op_AddI && op2 == Op_AddI && in1->in(2) == in2->in(2) )
   207     return new (phase->C, 3) SubINode( in1->in(1), in2->in(1) );
   207     return new (phase->C, 3) SubINode( in1->in(1), in2->in(1) );
       
   208 
       
   209   // Convert "(A+X) - (X+B)" into "A - B"
       
   210   if( op1 == Op_AddI && op2 == Op_AddI && in1->in(2) == in2->in(1) )
       
   211     return new (phase->C, 3) SubINode( in1->in(1), in2->in(2) );
       
   212 
       
   213   // Convert "(X+A) - (B+X)" into "A - B"
       
   214   if( op1 == Op_AddI && op2 == Op_AddI && in1->in(1) == in2->in(2) )
       
   215     return new (phase->C, 3) SubINode( in1->in(2), in2->in(1) );
   208 
   216 
   209   // Convert "A-(B-C)" into (A+C)-B", since add is commutative and generally
   217   // Convert "A-(B-C)" into (A+C)-B", since add is commutative and generally
   210   // nicer to optimize than subtract.
   218   // nicer to optimize than subtract.
   211   if( op2 == Op_SubI && in2->outcnt() == 1) {
   219   if( op2 == Op_SubI && in2->outcnt() == 1) {
   212     Node *add1 = phase->transform( new (phase->C, 3) AddINode( in1, in2->in(2) ) );
   220     Node *add1 = phase->transform( new (phase->C, 3) AddINode( in1, in2->in(2) ) );