SDOperand visitLOAD(SDNode *N);
SDOperand visitSTORE(SDNode *N);
- SDOperand visitLOCATION(SDNode *N);
- SDOperand visitDEBUGLOC(SDNode *N);
-
SDOperand ReassociateOps(unsigned Opc, SDOperand LHS, SDOperand RHS);
bool SimplifySelectOps(SDNode *SELECT, SDOperand LHS, SDOperand RHS);
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();
}
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!");
Ops.push_back(DAG.getConstant(SrcFile, MVT::i32)); // source file id
Result = DAG.getNode(ISD::DEBUG_LOC, MVT::Other, Ops);
} else {
- unsigned Line = dyn_cast<ConstantSDNode>(LineOp)->getValue();
- unsigned Col = dyn_cast<ConstantSDNode>(ColOp)->getValue();
+ unsigned Line = cast<ConstantSDNode>(LineOp)->getValue();
+ unsigned Col = cast<ConstantSDNode>(ColOp)->getValue();
unsigned ID = DebugInfo->RecordLabel(Line, Col, SrcFile);
Ops.push_back(DAG.getConstant(ID, MVT::i32));
Result = DAG.getNode(ISD::DEBUG_LABEL, MVT::Other, Ops);