mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-28 03:25:23 +00:00
Revert change r231366 as it broke clang-native-arm-cortex-a9 Analysis/properties.m test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231374 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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<const Value *, unsigned>::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<const Value *, unsigned>::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);
|
||||
|
Reference in New Issue
Block a user