Remove redundant debug locations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24995 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jim Laskey 2005-12-23 20:08:28 +00:00
parent 72f49aae17
commit d6e8d41340

View File

@ -175,6 +175,9 @@ namespace {
SDOperand visitLOAD(SDNode *N);
SDOperand visitSTORE(SDNode *N);
SDOperand visitLOCATION(SDNode *N);
SDOperand visitDEBUGLOC(SDNode *N);
bool SimplifySelectOps(SDNode *SELECT, SDOperand LHS, SDOperand RHS);
SDOperand SimplifySelect(SDOperand N0, SDOperand N1, SDOperand N2);
SDOperand SimplifySelectCC(SDOperand N0, SDOperand N1, SDOperand N2,
@ -631,6 +634,8 @@ SDOperand DAGCombiner::visit(SDNode *N) {
case ISD::BRTWOWAY_CC: return visitBRTWOWAY_CC(N);
case ISD::LOAD: return visitLOAD(N);
case ISD::STORE: return visitSTORE(N);
case ISD::LOCATION: return visitLOCATION(N);
case ISD::DEBUG_LOC: return visitDEBUGLOC(N);
}
return SDOperand();
}
@ -2089,6 +2094,35 @@ SDOperand DAGCombiner::visitSTORE(SDNode *N) {
return SDOperand();
}
SDOperand DAGCombiner::visitLOCATION(SDNode *N) {
SDOperand Chain = N->getOperand(0);
// Remove redundant locations (last one holds)
if (Chain.getOpcode() == ISD::LOCATION && Chain.hasOneUse()) {
return DAG.getNode(ISD::LOCATION, MVT::Other, Chain.getOperand(0),
N->getOperand(1),
N->getOperand(2),
N->getOperand(3),
N->getOperand(4));
}
return SDOperand();
}
SDOperand DAGCombiner::visitDEBUGLOC(SDNode *N) {
SDOperand Chain = N->getOperand(0);
// Remove redundant debug locations (last one holds)
if (Chain.getOpcode() == ISD::DEBUG_LOC && Chain.hasOneUse()) {
return DAG.getNode(ISD::DEBUG_LOC, MVT::Other, Chain.getOperand(0),
N->getOperand(1),
N->getOperand(2),
N->getOperand(3));
}
return SDOperand();
}
SDOperand DAGCombiner::SimplifySelect(SDOperand N0, SDOperand N1, SDOperand N2){
assert(N0.getOpcode() ==ISD::SETCC && "First argument must be a SetCC node!");