mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-10 14:36:01 +00:00
Don't call SDNode::isPredecessorOf when it isn't necessary. If the load's
chains have no users, they can't be predecessors of the condition. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85394 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b8457a1a29
commit
1507cd03a6
@ -5737,8 +5737,10 @@ bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS,
|
||||
if (TheSelect->getOpcode() == ISD::SELECT) {
|
||||
// Check that the condition doesn't reach either load. If so, folding
|
||||
// this will induce a cycle into the DAG.
|
||||
if (!LLD->isPredecessorOf(TheSelect->getOperand(0).getNode()) &&
|
||||
!RLD->isPredecessorOf(TheSelect->getOperand(0).getNode())) {
|
||||
if ((!LLD->hasAnyUseOfValue(1) ||
|
||||
!LLD->isPredecessorOf(TheSelect->getOperand(0).getNode())) &&
|
||||
(!RLD->hasAnyUseOfValue(1) ||
|
||||
!RLD->isPredecessorOf(TheSelect->getOperand(0).getNode()))) {
|
||||
Addr = DAG.getNode(ISD::SELECT, TheSelect->getDebugLoc(),
|
||||
LLD->getBasePtr().getValueType(),
|
||||
TheSelect->getOperand(0), LLD->getBasePtr(),
|
||||
@ -5747,10 +5749,12 @@ bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS,
|
||||
} else {
|
||||
// Check that the condition doesn't reach either load. If so, folding
|
||||
// this will induce a cycle into the DAG.
|
||||
if (!LLD->isPredecessorOf(TheSelect->getOperand(0).getNode()) &&
|
||||
!RLD->isPredecessorOf(TheSelect->getOperand(0).getNode()) &&
|
||||
!LLD->isPredecessorOf(TheSelect->getOperand(1).getNode()) &&
|
||||
!RLD->isPredecessorOf(TheSelect->getOperand(1).getNode())) {
|
||||
if ((!LLD->hasAnyUseOfValue(1) ||
|
||||
(!LLD->isPredecessorOf(TheSelect->getOperand(0).getNode()) &&
|
||||
!LLD->isPredecessorOf(TheSelect->getOperand(1).getNode()))) &&
|
||||
(!RLD->hasAnyUseOfValue(1) ||
|
||||
(!RLD->isPredecessorOf(TheSelect->getOperand(0).getNode()) &&
|
||||
!RLD->isPredecessorOf(TheSelect->getOperand(1).getNode())))) {
|
||||
Addr = DAG.getNode(ISD::SELECT_CC, TheSelect->getDebugLoc(),
|
||||
LLD->getBasePtr().getValueType(),
|
||||
TheSelect->getOperand(0),
|
||||
|
Loading…
x
Reference in New Issue
Block a user