src/share/vm/opto/subnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
warning2 Cdiff src/share/vm/opto/subnode.cpp
src/share/vm/opto/subnode.cpp
Print this page
rev 3821 : [mq]: unused
*** 1076,1095 ****
uint BoolNode::cmp( const Node &n ) const {
const BoolNode *b = (const BoolNode *)&n; // Cast up
return (_test._test == b->_test._test);
}
- //------------------------------clone_cmp--------------------------------------
- // Clone a compare/bool tree
- static Node *clone_cmp( Node *cmp, Node *cmp1, Node *cmp2, PhaseGVN *gvn, BoolTest::mask test ) {
- Node *ncmp = cmp->clone();
- ncmp->set_req(1,cmp1);
- ncmp->set_req(2,cmp2);
- ncmp = gvn->transform( ncmp );
- return new (gvn->C) BoolNode( ncmp, test );
- }
-
//-------------------------------make_predicate--------------------------------
Node* BoolNode::make_predicate(Node* test_value, PhaseGVN* phase) {
if (test_value->is_Con()) return test_value;
if (test_value->is_Bool()) return test_value;
Compile* C = phase->C;
--- 1076,1085 ----
*** 1214,1268 ****
phase->type( cmp1->in(2) )->higher_equal(TypeInt::SYMINT) ) {
Node *ncmp = phase->transform( new (phase->C) CmpINode(cmp1->in(2),cmp2));
return new (phase->C) BoolNode( ncmp, _test.commute() );
}
- // The transformation below is not valid for either signed or unsigned
- // comparisons due to wraparound concerns at MAX_VALUE and MIN_VALUE.
- // This transformation can be resurrected when we are able to
- // make inferences about the range of values being subtracted from
- // (or added to) relative to the wraparound point.
- //
- // // Remove +/-1's if possible.
- // // "X <= Y-1" becomes "X < Y"
- // // "X+1 <= Y" becomes "X < Y"
- // // "X < Y+1" becomes "X <= Y"
- // // "X-1 < Y" becomes "X <= Y"
- // // Do not this to compares off of the counted-loop-end. These guys are
- // // checking the trip counter and they want to use the post-incremented
- // // counter. If they use the PRE-incremented counter, then the counter has
- // // to be incremented in a private block on a loop backedge.
- // if( du && du->cnt(this) && du->out(this)[0]->Opcode() == Op_CountedLoopEnd )
- // return NULL;
- // #ifndef PRODUCT
- // // Do not do this in a wash GVN pass during verification.
- // // Gets triggered by too many simple optimizations to be bothered with
- // // re-trying it again and again.
- // if( !phase->allow_progress() ) return NULL;
- // #endif
- // // Not valid for unsigned compare because of corner cases in involving zero.
- // // For example, replacing "X-1 <u Y" with "X <=u Y" fails to throw an
- // // exception in case X is 0 (because 0-1 turns into 4billion unsigned but
- // // "0 <=u Y" is always true).
- // if( cmp->Opcode() == Op_CmpU ) return NULL;
- // int cmp2_op = cmp2->Opcode();
- // if( _test._test == BoolTest::le ) {
- // if( cmp1_op == Op_AddI &&
- // phase->type( cmp1->in(2) ) == TypeInt::ONE )
- // return clone_cmp( cmp, cmp1->in(1), cmp2, phase, BoolTest::lt );
- // else if( cmp2_op == Op_AddI &&
- // phase->type( cmp2->in(2) ) == TypeInt::MINUS_1 )
- // return clone_cmp( cmp, cmp1, cmp2->in(1), phase, BoolTest::lt );
- // } else if( _test._test == BoolTest::lt ) {
- // if( cmp1_op == Op_AddI &&
- // phase->type( cmp1->in(2) ) == TypeInt::MINUS_1 )
- // return clone_cmp( cmp, cmp1->in(1), cmp2, phase, BoolTest::le );
- // else if( cmp2_op == Op_AddI &&
- // phase->type( cmp2->in(2) ) == TypeInt::ONE )
- // return clone_cmp( cmp, cmp1, cmp2->in(1), phase, BoolTest::le );
- // }
-
return NULL;
}
//------------------------------Value------------------------------------------
// Simplify a Bool (convert condition codes to boolean (1 or 0)) node,
--- 1204,1213 ----
src/share/vm/opto/subnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File