Skip to content

Commit 841d404

Browse files
committed
Add missing optimizations "(A+X) - (X+B)" and "(X+A) - (B+X)" for long type.
1 parent 591bf3a commit 841d404

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/hotspot/share/opto/subnode.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,14 @@ Node *SubLNode::Ideal(PhaseGVN *phase, bool can_reshape) {
435435
if( op1 == Op_AddL && op2 == Op_AddL && in1->in(2) == in2->in(2) )
436436
return new SubLNode( in1->in(1), in2->in(1) );
437437

438+
// Convert "(A+X) - (X+B)" into "A - B"
439+
if( op1 == Op_AddL && op2 == Op_AddL && in1->in(2) == in2->in(1) )
440+
return new SubLNode( in1->in(1), in2->in(2) );
441+
442+
// Convert "(X+A) - (B+X)" into "A - B"
443+
if( op1 == Op_AddL && op2 == Op_AddL && in1->in(1) == in2->in(2) )
444+
return new SubLNode( in1->in(2), in2->in(1) );
445+
438446
// Convert "A-(B-C)" into (A+C)-B"
439447
if( op2 == Op_SubL && in2->outcnt() == 1) {
440448
Node *add1 = phase->transform( new AddLNode( in1, in2->in(2) ) );

0 commit comments

Comments
 (0)