mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-10 02:36:06 +00:00
Handle improper cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34535 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
da2295e631
commit
1da20a71d1
@ -484,7 +484,9 @@ public:
|
||||
unsigned Opc);
|
||||
bool isExportableFromCurrentBlock(Value *V, const BasicBlock *FromBB);
|
||||
void ExportFromCurrentBlock(Value *V);
|
||||
void LowerCallTo(CallInst &I, SDOperand Callee, unsigned OpIdx);
|
||||
void LowerCallTo(Instruction &I,
|
||||
const Type *CalledValueTy, unsigned CallingConv,
|
||||
bool IsTailCall, SDOperand Callee, unsigned OpIdx);
|
||||
|
||||
// Terminator instructions.
|
||||
void visitRet(ReturnInst &I);
|
||||
@ -1118,7 +1120,11 @@ void SelectionDAGLowering::visitInvoke(InvokeInst &I) {
|
||||
DAG.setRoot(DAG.getNode(ISD::LABEL, MVT::Other, getRoot(),
|
||||
DAG.getConstant(BeginLabel, MVT::i32)));
|
||||
|
||||
LowerCallTo((CallInst&)I, getValue(I.getOperand(0)), 3);
|
||||
LowerCallTo(I, I.getCalledValue()->getType(),
|
||||
I.getCallingConv(),
|
||||
false,
|
||||
getValue(I.getOperand(0)),
|
||||
3);
|
||||
|
||||
// Insert a label before the invoke call to mark the try range.
|
||||
// This can be used to detect deletion of the invoke via the
|
||||
@ -2246,9 +2252,12 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
||||
}
|
||||
|
||||
|
||||
void SelectionDAGLowering::LowerCallTo(CallInst &I,
|
||||
void SelectionDAGLowering::LowerCallTo(Instruction &I,
|
||||
const Type *CalledValueTy,
|
||||
unsigned CallingConv,
|
||||
bool IsTailCall,
|
||||
SDOperand Callee, unsigned OpIdx) {
|
||||
const PointerType *PT = cast<PointerType>(I.getCalledValue()->getType());
|
||||
const PointerType *PT = cast<PointerType>(CalledValueTy);
|
||||
const FunctionType *FTy = cast<FunctionType>(PT->getElementType());
|
||||
|
||||
TargetLowering::ArgListTy Args;
|
||||
@ -2267,7 +2276,7 @@ void SelectionDAGLowering::LowerCallTo(CallInst &I,
|
||||
std::pair<SDOperand,SDOperand> Result =
|
||||
TLI.LowerCallTo(getRoot(), I.getType(),
|
||||
FTy->paramHasAttr(0,FunctionType::SExtAttribute),
|
||||
FTy->isVarArg(), I.getCallingConv(), I.isTailCall(),
|
||||
FTy->isVarArg(), CallingConv, IsTailCall,
|
||||
Callee, Args, DAG);
|
||||
if (I.getType() != Type::VoidTy)
|
||||
setValue(&I, Result.first);
|
||||
@ -2333,7 +2342,11 @@ void SelectionDAGLowering::visitCall(CallInst &I) {
|
||||
else
|
||||
Callee = DAG.getExternalSymbol(RenameFn, TLI.getPointerTy());
|
||||
|
||||
LowerCallTo(I, Callee, 1);
|
||||
LowerCallTo(I, I.getCalledValue()->getType(),
|
||||
I.getCallingConv(),
|
||||
I.isTailCall(),
|
||||
Callee,
|
||||
1);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user