mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 19:31:50 +00:00
bug 3610: Floating point vaarg not softened.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65239 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
07bf7efa0a
commit
278f83daeb
@ -88,6 +88,7 @@ void DAGTypeLegalizer::SoftenFloatResult(SDNode *N, unsigned ResNo) {
|
||||
case ISD::SELECT_CC: R = SoftenFloatRes_SELECT_CC(N); break;
|
||||
case ISD::SINT_TO_FP:
|
||||
case ISD::UINT_TO_FP: R = SoftenFloatRes_XINT_TO_FP(N); break;
|
||||
case ISD::VAARG: R = SoftenFloatRes_VAARG(N); break;
|
||||
}
|
||||
|
||||
// If R is null, the sub-method took care of registering the result.
|
||||
@ -454,6 +455,22 @@ SDValue DAGTypeLegalizer::SoftenFloatRes_SELECT_CC(SDNode *N) {
|
||||
N->getOperand(1), LHS, RHS, N->getOperand(4));
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::SoftenFloatRes_VAARG(SDNode *N) {
|
||||
SDValue Chain = N->getOperand(0); // Get the chain.
|
||||
SDValue Ptr = N->getOperand(1); // Get the pointer.
|
||||
MVT VT = N->getValueType(0);
|
||||
MVT NVT = TLI.getTypeToTransformTo(VT);
|
||||
DebugLoc dl = N->getDebugLoc();
|
||||
|
||||
SDValue NewVAARG;
|
||||
NewVAARG = DAG.getVAArg(NVT, dl, Chain, Ptr, N->getOperand(2));
|
||||
|
||||
// Legalized the chain result - switch anything that used the old chain to
|
||||
// use the new one.
|
||||
ReplaceValueWith(SDValue(N, 1), NewVAARG.getValue(1));
|
||||
return NewVAARG;
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::SoftenFloatRes_XINT_TO_FP(SDNode *N) {
|
||||
bool Signed = N->getOpcode() == ISD::SINT_TO_FP;
|
||||
MVT SVT = N->getOperand(0).getValueType();
|
||||
|
@ -417,6 +417,7 @@ private:
|
||||
SDValue SoftenFloatRes_LOAD(SDNode *N);
|
||||
SDValue SoftenFloatRes_SELECT(SDNode *N);
|
||||
SDValue SoftenFloatRes_SELECT_CC(SDNode *N);
|
||||
SDValue SoftenFloatRes_VAARG(SDNode *N);
|
||||
SDValue SoftenFloatRes_XINT_TO_FP(SDNode *N);
|
||||
|
||||
// Operand Float to Integer Conversion.
|
||||
|
Loading…
x
Reference in New Issue
Block a user