comparison src/share/vm/opto/subnode.cpp @ 400:cc80376deb0c

6667595: Set probability FAIR for pre-, post- loops and ALWAYS for main loop Summary: Fix loop's probability. Add optimizations to avoid spilling. Change InlineSmallCode to product flag. Reviewed-by: never
author kvn
date Thu, 02 Oct 2008 08:37:44 -0700
parents ce93a51457ae
children 90a66aa50514
comparison
equal deleted inserted replaced
372:be41fa651400 400:cc80376deb0c
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) ) );