mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-10 02:36:06 +00:00
Fix a FIXME by moving the fast-isel implementation of the objectsize intrinsic from the x86 code to the generic code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131332 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a3f88148e6
commit
d0118a2371
@ -628,6 +628,16 @@ bool FastISel::SelectCall(const User *I) {
|
||||
|
||||
return true;
|
||||
}
|
||||
case Intrinsic::objectsize: {
|
||||
ConstantInt *CI = cast<ConstantInt>(Call->getArgOperand(1));
|
||||
unsigned long long Res = CI->isZero() ? -1ULL : 0;
|
||||
Constant *ResCI = ConstantInt::get(Call->getType(), Res);
|
||||
unsigned ResultReg = getRegForValue(ResCI);
|
||||
if (ResultReg == 0)
|
||||
return false;
|
||||
UpdateValueMap(Call, ResultReg);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// An arbitrary call. Bail.
|
||||
|
@ -1369,29 +1369,6 @@ bool X86FastISel::X86VisitIntrinsicCall(const IntrinsicInst &I) {
|
||||
if (!X86FastEmitStore(PtrTy, Op1, AM)) return false;
|
||||
return true;
|
||||
}
|
||||
case Intrinsic::objectsize: {
|
||||
// FIXME: This should be moved to generic code!
|
||||
ConstantInt *CI = cast<ConstantInt>(I.getArgOperand(1));
|
||||
const Type *Ty = I.getCalledFunction()->getReturnType();
|
||||
|
||||
MVT VT;
|
||||
if (!isTypeLegal(Ty, VT))
|
||||
return false;
|
||||
|
||||
unsigned OpC = 0;
|
||||
if (VT == MVT::i32)
|
||||
OpC = X86::MOV32ri;
|
||||
else if (VT == MVT::i64)
|
||||
OpC = X86::MOV64ri;
|
||||
else
|
||||
return false;
|
||||
|
||||
unsigned ResultReg = createResultReg(TLI.getRegClassFor(VT));
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(OpC), ResultReg).
|
||||
addImm(CI->isZero() ? -1ULL : 0);
|
||||
UpdateValueMap(&I, ResultReg);
|
||||
return true;
|
||||
}
|
||||
case Intrinsic::dbg_declare: {
|
||||
const DbgDeclareInst *DI = cast<DbgDeclareInst>(&I);
|
||||
X86AddressMode AM;
|
||||
|
Loading…
x
Reference in New Issue
Block a user