diff options
author | Martin Storsjo <martin@martin.st> | 2018-05-03 07:09:33 +0000 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2018-05-03 07:09:33 +0000 |
commit | 67fdea490d09dfc23ab666f58008b67393b8540d (patch) | |
tree | ee9a57e56baac5a80426d08d2c046bd0e4a23f67 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | 369a38ba0f8402d89d5b682a57ff61bc60892a7d (diff) | |
download | bcm5719-llvm-67fdea490d09dfc23ab666f58008b67393b8540d.tar.gz bcm5719-llvm-67fdea490d09dfc23ab666f58008b67393b8540d.zip |
Revert "[SelectionDAG] Selection of DBG_VALUE using a PHI node result (pt 2)"
This reverts SVN r331337, see PR37321 for details on the regression
it introduced.
llvm-svn: 331441
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 561459e506c..2ac4d3a7b24 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -5257,37 +5257,12 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) { // PHI nodes have already been selected, so we should know which VReg that // is assigns to already. if (isa<PHINode>(V)) { - auto VMI = FuncInfo.ValueMap.find(V); - if (VMI != FuncInfo.ValueMap.end()) { - unsigned Reg = VMI->second; - // The PHI node may be split up into several MI PHI nodes (in - // FunctionLoweringInfo::set). - RegsForValue RFV(V->getContext(), TLI, DAG.getDataLayout(), Reg, - V->getType(), false); - if (RFV.occupiesMultipleRegs()) { - unsigned I = 0; - unsigned Offset = 0; - for (auto CountAndVT : zip_first(RFV.RegCount, RFV.RegVTs)) { - unsigned RegCount = std::get<0>(CountAndVT); - MVT RegisterVT = std::get<1>(CountAndVT); - unsigned RegisterSize = RegisterVT.getSizeInBits(); - for (unsigned E = I + RegCount; I != E; ++I) { - auto FragmentExpr = DIExpression::createFragmentExpression( - Expression, Offset, RegisterSize); - if (!FragmentExpr) - continue; - // The vregs are guaranteed to be allocated in sequence. - SDV = DAG.getVRegDbgValue(Variable, *FragmentExpr, Reg + I, - false, dl, SDNodeOrder); - DAG.AddDbgValue(SDV, nullptr, false); - Offset += RegisterSize; - } - } - } else { - SDV = DAG.getVRegDbgValue(Variable, Expression, Reg, false, dl, - SDNodeOrder); - DAG.AddDbgValue(SDV, nullptr, false); - } + auto It = FuncInfo.ValueMap.find(V); + if (It != FuncInfo.ValueMap.end()) { + unsigned Reg = It->second; + SDV = DAG.getVRegDbgValue(Variable, Expression, Reg, false, dl, + SDNodeOrder); + DAG.AddDbgValue(SDV, nullptr, false); return nullptr; } } |