From 8d0851f509bfd63180ba2d96c9028cb54b30c595 Mon Sep 17 00:00:00 2001 From: Igor Laevsky Date: Thu, 5 Mar 2015 15:41:14 +0000 Subject: Revert change r231366 as it broke clang-native-arm-cortex-a9 Analysis/properties.m test. llvm-svn: 231374 --- .../CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 39 ++++++---------------- 1 file changed, 10 insertions(+), 29 deletions(-) (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp') diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 61631f04df8..097b618252e 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -1016,24 +1016,6 @@ void SelectionDAGBuilder::resolveDanglingDebugInfo(const Value *V, } } -/// getCopyFromRegs - If there was virtual register allocated for the value V -/// emit CopyFromReg of the specified type Ty. Return empty SDValue() otherwise. -SDValue SelectionDAGBuilder::getCopyFromRegs(const Value *V, Type *Ty) { - DenseMap::iterator It = FuncInfo.ValueMap.find(V); - SDValue res; - - if (It != FuncInfo.ValueMap.end()) { - unsigned InReg = It->second; - RegsForValue RFV(*DAG.getContext(), DAG.getTargetLoweringInfo(), InReg, - Ty); - SDValue Chain = DAG.getEntryNode(); - res = RFV.getCopyFromRegs(DAG, FuncInfo, getCurSDLoc(), Chain, nullptr, V); - resolveDanglingDebugInfo(V, res); - } - - return res; -} - /// getValue - Return an SDValue for the given Value. SDValue SelectionDAGBuilder::getValue(const Value *V) { // If we already have an SDValue for this value, use it. It's important @@ -1044,9 +1026,15 @@ SDValue SelectionDAGBuilder::getValue(const Value *V) { // If there's a virtual register allocated and initialized for this // value, use it. - SDValue copyFromReg = getCopyFromRegs(V, V->getType()); - if (copyFromReg.getNode()) { - return copyFromReg; + DenseMap::iterator It = FuncInfo.ValueMap.find(V); + if (It != FuncInfo.ValueMap.end()) { + unsigned InReg = It->second; + RegsForValue RFV(*DAG.getContext(), DAG.getTargetLoweringInfo(), InReg, + V->getType()); + SDValue Chain = DAG.getEntryNode(); + N = RFV.getCopyFromRegs(DAG, FuncInfo, getCurSDLoc(), Chain, nullptr, V); + resolveDanglingDebugInfo(V, N); + return N; } // Otherwise create a new SDValue and remember it. @@ -2039,20 +2027,13 @@ void SelectionDAGBuilder::visitInvoke(const InvokeInst &I) { case Intrinsic::experimental_patchpoint_i64: visitPatchpoint(&I, LandingPad); break; - case Intrinsic::experimental_gc_statepoint: - LowerStatepoint(ImmutableStatepoint(&I), LandingPad); - break; } } else LowerCallTo(&I, getValue(Callee), false, LandingPad); // If the value of the invoke is used outside of its defining block, make it // available as a virtual register. - // We already took care of the exported value for the statepoint instruction - // during call to the LowerStatepoint. - if (!isStatepoint(I)) { - CopyToExportRegsIfNeeded(&I); - } + CopyToExportRegsIfNeeded(&I); // Update successor info addSuccessorWithWeight(InvokeMBB, Return); -- cgit v1.2.3