mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
land David Blaikie's patch to de-constify Type, with a few tweaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -578,7 +578,7 @@ namespace {
|
||||
: ValueVTs(1, valuevt), RegVTs(1, regvt), Regs(regs) {}
|
||||
|
||||
RegsForValue(LLVMContext &Context, const TargetLowering &tli,
|
||||
unsigned Reg, const Type *Ty) {
|
||||
unsigned Reg, Type *Ty) {
|
||||
ComputeValueVTs(tli, Ty, ValueVTs);
|
||||
|
||||
for (unsigned Value = 0, e = ValueVTs.size(); Value != e; ++Value) {
|
||||
@@ -1069,7 +1069,7 @@ SDValue SelectionDAGBuilder::getValueImpl(const Value *V) {
|
||||
if (const BlockAddress *BA = dyn_cast<BlockAddress>(C))
|
||||
return DAG.getBlockAddress(BA, VT);
|
||||
|
||||
const VectorType *VecTy = cast<VectorType>(V->getType());
|
||||
VectorType *VecTy = cast<VectorType>(V->getType());
|
||||
unsigned NumElements = VecTy->getNumElements();
|
||||
|
||||
// Now that we know the number and type of the elements, get that number of
|
||||
@@ -2458,7 +2458,7 @@ void SelectionDAGBuilder::visitIndirectBr(const IndirectBrInst &I) {
|
||||
|
||||
void SelectionDAGBuilder::visitFSub(const User &I) {
|
||||
// -0.0 - X --> fneg
|
||||
const Type *Ty = I.getType();
|
||||
Type *Ty = I.getType();
|
||||
if (isa<Constant>(I.getOperand(0)) &&
|
||||
I.getOperand(0) == ConstantFP::getZeroValueForNegation(Ty)) {
|
||||
SDValue Op2 = getValue(I.getOperand(1));
|
||||
@@ -2886,8 +2886,8 @@ void SelectionDAGBuilder::visitShuffleVector(const User &I) {
|
||||
void SelectionDAGBuilder::visitInsertValue(const InsertValueInst &I) {
|
||||
const Value *Op0 = I.getOperand(0);
|
||||
const Value *Op1 = I.getOperand(1);
|
||||
const Type *AggTy = I.getType();
|
||||
const Type *ValTy = Op1->getType();
|
||||
Type *AggTy = I.getType();
|
||||
Type *ValTy = Op1->getType();
|
||||
bool IntoUndef = isa<UndefValue>(Op0);
|
||||
bool FromUndef = isa<UndefValue>(Op1);
|
||||
|
||||
@@ -2927,8 +2927,8 @@ void SelectionDAGBuilder::visitInsertValue(const InsertValueInst &I) {
|
||||
|
||||
void SelectionDAGBuilder::visitExtractValue(const ExtractValueInst &I) {
|
||||
const Value *Op0 = I.getOperand(0);
|
||||
const Type *AggTy = Op0->getType();
|
||||
const Type *ValTy = I.getType();
|
||||
Type *AggTy = Op0->getType();
|
||||
Type *ValTy = I.getType();
|
||||
bool OutOfUndef = isa<UndefValue>(Op0);
|
||||
|
||||
unsigned LinearIndex = ComputeLinearIndex(AggTy, I.getIndices());
|
||||
@@ -2961,12 +2961,12 @@ void SelectionDAGBuilder::visitExtractValue(const ExtractValueInst &I) {
|
||||
|
||||
void SelectionDAGBuilder::visitGetElementPtr(const User &I) {
|
||||
SDValue N = getValue(I.getOperand(0));
|
||||
const Type *Ty = I.getOperand(0)->getType();
|
||||
Type *Ty = I.getOperand(0)->getType();
|
||||
|
||||
for (GetElementPtrInst::const_op_iterator OI = I.op_begin()+1, E = I.op_end();
|
||||
OI != E; ++OI) {
|
||||
const Value *Idx = *OI;
|
||||
if (const StructType *StTy = dyn_cast<StructType>(Ty)) {
|
||||
if (StructType *StTy = dyn_cast<StructType>(Ty)) {
|
||||
unsigned Field = cast<ConstantInt>(Idx)->getZExtValue();
|
||||
if (Field) {
|
||||
// N = N + Offset
|
||||
@@ -3037,7 +3037,7 @@ void SelectionDAGBuilder::visitAlloca(const AllocaInst &I) {
|
||||
if (FuncInfo.StaticAllocaMap.count(&I))
|
||||
return; // getValue will auto-populate this.
|
||||
|
||||
const Type *Ty = I.getAllocatedType();
|
||||
Type *Ty = I.getAllocatedType();
|
||||
uint64_t TySize = TLI.getTargetData()->getTypeAllocSize(Ty);
|
||||
unsigned Align =
|
||||
std::max((unsigned)TLI.getTargetData()->getPrefTypeAlignment(Ty),
|
||||
@@ -3087,7 +3087,7 @@ void SelectionDAGBuilder::visitLoad(const LoadInst &I) {
|
||||
const Value *SV = I.getOperand(0);
|
||||
SDValue Ptr = getValue(SV);
|
||||
|
||||
const Type *Ty = I.getType();
|
||||
Type *Ty = I.getType();
|
||||
|
||||
bool isVolatile = I.isVolatile();
|
||||
bool isNonTemporal = I.getMetadata("nontemporal") != 0;
|
||||
@@ -3290,7 +3290,7 @@ void SelectionDAGBuilder::visitTargetIntrinsic(const CallInst &I,
|
||||
}
|
||||
|
||||
if (!I.getType()->isVoidTy()) {
|
||||
if (const VectorType *PTy = dyn_cast<VectorType>(I.getType())) {
|
||||
if (VectorType *PTy = dyn_cast<VectorType>(I.getType())) {
|
||||
EVT VT = TLI.getValueType(PTy);
|
||||
Result = DAG.getNode(ISD::BITCAST, getCurDebugLoc(), VT, Result);
|
||||
}
|
||||
@@ -4918,9 +4918,9 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
void SelectionDAGBuilder::LowerCallTo(ImmutableCallSite CS, SDValue Callee,
|
||||
bool isTailCall,
|
||||
MachineBasicBlock *LandingPad) {
|
||||
const PointerType *PT = cast<PointerType>(CS.getCalledValue()->getType());
|
||||
const FunctionType *FTy = cast<FunctionType>(PT->getElementType());
|
||||
const Type *RetTy = FTy->getReturnType();
|
||||
PointerType *PT = cast<PointerType>(CS.getCalledValue()->getType());
|
||||
FunctionType *FTy = cast<FunctionType>(PT->getElementType());
|
||||
Type *RetTy = FTy->getReturnType();
|
||||
MachineModuleInfo &MMI = DAG.getMachineFunction().getMMI();
|
||||
MCSymbol *BeginLabel = 0;
|
||||
|
||||
@@ -4949,7 +4949,7 @@ void SelectionDAGBuilder::LowerCallTo(ImmutableCallSite CS, SDValue Callee,
|
||||
FTy->getReturnType());
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
DemoteStackIdx = MF.getFrameInfo()->CreateStackObject(TySize, Align, false);
|
||||
const Type *StackSlotPtrType = PointerType::getUnqual(FTy->getReturnType());
|
||||
Type *StackSlotPtrType = PointerType::getUnqual(FTy->getReturnType());
|
||||
|
||||
DemoteStackSlot = DAG.getFrameIndex(DemoteStackIdx, TLI.getPointerTy());
|
||||
Entry.Node = DemoteStackSlot;
|
||||
@@ -5037,7 +5037,7 @@ void SelectionDAGBuilder::LowerCallTo(ImmutableCallSite CS, SDValue Callee,
|
||||
// The instruction result is the result of loading from the
|
||||
// hidden sret parameter.
|
||||
SmallVector<EVT, 1> PVTs;
|
||||
const Type *PtrRetTy = PointerType::getUnqual(FTy->getReturnType());
|
||||
Type *PtrRetTy = PointerType::getUnqual(FTy->getReturnType());
|
||||
|
||||
ComputeValueVTs(TLI, PtrRetTy, PVTs);
|
||||
assert(PVTs.size() == 1 && "Pointers should fit in one register");
|
||||
@@ -5130,7 +5130,7 @@ static bool IsOnlyUsedInZeroEqualityComparison(const Value *V) {
|
||||
}
|
||||
|
||||
static SDValue getMemCmpLoad(const Value *PtrVal, MVT LoadVT,
|
||||
const Type *LoadTy,
|
||||
Type *LoadTy,
|
||||
SelectionDAGBuilder &Builder) {
|
||||
|
||||
// Check to see if this load can be trivially constant folded, e.g. if the
|
||||
@@ -5193,7 +5193,7 @@ bool SelectionDAGBuilder::visitMemCmpCall(const CallInst &I) {
|
||||
if (Size && IsOnlyUsedInZeroEqualityComparison(&I)) {
|
||||
bool ActuallyDoIt = true;
|
||||
MVT LoadVT;
|
||||
const Type *LoadTy;
|
||||
Type *LoadTy;
|
||||
switch (Size->getZExtValue()) {
|
||||
default:
|
||||
LoadVT = MVT::Other;
|
||||
@@ -5261,14 +5261,14 @@ void SelectionDAGBuilder::visitCall(const CallInst &I) {
|
||||
|
||||
// See if any floating point values are being passed to this function. This is
|
||||
// used to emit an undefined reference to fltused on Windows.
|
||||
const FunctionType *FT =
|
||||
FunctionType *FT =
|
||||
cast<FunctionType>(I.getCalledValue()->getType()->getContainedType(0));
|
||||
MachineModuleInfo &MMI = DAG.getMachineFunction().getMMI();
|
||||
if (FT->isVarArg() &&
|
||||
!MMI.callsExternalVAFunctionWithFloatingPointArguments()) {
|
||||
for (unsigned i = 0, e = I.getNumArgOperands(); i != e; ++i) {
|
||||
const Type* T = I.getArgOperand(i)->getType();
|
||||
for (po_iterator<const Type*> i = po_begin(T), e = po_end(T);
|
||||
Type* T = I.getArgOperand(i)->getType();
|
||||
for (po_iterator<Type*> i = po_begin(T), e = po_end(T);
|
||||
i != e; ++i) {
|
||||
if (!i->isFloatingPointTy()) continue;
|
||||
MMI.setCallsExternalVAFunctionWithFloatingPointArguments(true);
|
||||
@@ -5412,20 +5412,20 @@ public:
|
||||
if (isa<BasicBlock>(CallOperandVal))
|
||||
return TLI.getPointerTy();
|
||||
|
||||
const llvm::Type *OpTy = CallOperandVal->getType();
|
||||
llvm::Type *OpTy = CallOperandVal->getType();
|
||||
|
||||
// FIXME: code duplicated from TargetLowering::ParseConstraints().
|
||||
// If this is an indirect operand, the operand is a pointer to the
|
||||
// accessed type.
|
||||
if (isIndirect) {
|
||||
const llvm::PointerType *PtrTy = dyn_cast<PointerType>(OpTy);
|
||||
llvm::PointerType *PtrTy = dyn_cast<PointerType>(OpTy);
|
||||
if (!PtrTy)
|
||||
report_fatal_error("Indirect operand for inline asm not a pointer!");
|
||||
OpTy = PtrTy->getElementType();
|
||||
}
|
||||
|
||||
// Look for vector wrapped in a struct. e.g. { <16 x i8> }.
|
||||
if (const StructType *STy = dyn_cast<StructType>(OpTy))
|
||||
if (StructType *STy = dyn_cast<StructType>(OpTy))
|
||||
if (STy->getNumElements() == 1)
|
||||
OpTy = STy->getElementType(0);
|
||||
|
||||
@@ -5639,7 +5639,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
||||
// corresponding argument.
|
||||
assert(!CS.getType()->isVoidTy() &&
|
||||
"Bad inline asm!");
|
||||
if (const StructType *STy = dyn_cast<StructType>(CS.getType())) {
|
||||
if (StructType *STy = dyn_cast<StructType>(CS.getType())) {
|
||||
OpVT = TLI.getValueType(STy->getElementType(ResNo));
|
||||
} else {
|
||||
assert(ResNo == 0 && "Asm only has one result!");
|
||||
@@ -5750,7 +5750,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
||||
} else {
|
||||
// Otherwise, create a stack slot and emit a store to it before the
|
||||
// asm.
|
||||
const Type *Ty = OpVal->getType();
|
||||
Type *Ty = OpVal->getType();
|
||||
uint64_t TySize = TLI.getTargetData()->getTypeAllocSize(Ty);
|
||||
unsigned Align = TLI.getTargetData()->getPrefTypeAlignment(Ty);
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
@@ -6111,7 +6111,7 @@ void SelectionDAGBuilder::visitVACopy(const CallInst &I) {
|
||||
/// FIXME: When all targets are
|
||||
/// migrated to using LowerCall, this hook should be integrated into SDISel.
|
||||
std::pair<SDValue, SDValue>
|
||||
TargetLowering::LowerCallTo(SDValue Chain, const Type *RetTy,
|
||||
TargetLowering::LowerCallTo(SDValue Chain, Type *RetTy,
|
||||
bool RetSExt, bool RetZExt, bool isVarArg,
|
||||
bool isInreg, unsigned NumFixedArgs,
|
||||
CallingConv::ID CallConv, bool isTailCall,
|
||||
@@ -6128,7 +6128,7 @@ TargetLowering::LowerCallTo(SDValue Chain, const Type *RetTy,
|
||||
for (unsigned Value = 0, NumValues = ValueVTs.size();
|
||||
Value != NumValues; ++Value) {
|
||||
EVT VT = ValueVTs[Value];
|
||||
const Type *ArgTy = VT.getTypeForEVT(RetTy->getContext());
|
||||
Type *ArgTy = VT.getTypeForEVT(RetTy->getContext());
|
||||
SDValue Op = SDValue(Args[i].Node.getNode(),
|
||||
Args[i].Node.getResNo() + Value);
|
||||
ISD::ArgFlagsTy Flags;
|
||||
@@ -6145,8 +6145,8 @@ TargetLowering::LowerCallTo(SDValue Chain, const Type *RetTy,
|
||||
Flags.setSRet();
|
||||
if (Args[i].isByVal) {
|
||||
Flags.setByVal();
|
||||
const PointerType *Ty = cast<PointerType>(Args[i].Ty);
|
||||
const Type *ElementTy = Ty->getElementType();
|
||||
PointerType *Ty = cast<PointerType>(Args[i].Ty);
|
||||
Type *ElementTy = Ty->getElementType();
|
||||
Flags.setByValSize(getTargetData()->getTypeAllocSize(ElementTy));
|
||||
// For ByVal, alignment should come from FE. BE will guess if this
|
||||
// info is not there but there are cases it cannot get right.
|
||||
@@ -6356,7 +6356,7 @@ void SelectionDAGISel::LowerArguments(const BasicBlock *LLVMBB) {
|
||||
for (unsigned Value = 0, NumValues = ValueVTs.size();
|
||||
Value != NumValues; ++Value) {
|
||||
EVT VT = ValueVTs[Value];
|
||||
const Type *ArgTy = VT.getTypeForEVT(*DAG.getContext());
|
||||
Type *ArgTy = VT.getTypeForEVT(*DAG.getContext());
|
||||
ISD::ArgFlagsTy Flags;
|
||||
unsigned OriginalAlignment =
|
||||
TD->getABITypeAlignment(ArgTy);
|
||||
@@ -6371,8 +6371,8 @@ void SelectionDAGISel::LowerArguments(const BasicBlock *LLVMBB) {
|
||||
Flags.setSRet();
|
||||
if (F.paramHasAttr(Idx, Attribute::ByVal)) {
|
||||
Flags.setByVal();
|
||||
const PointerType *Ty = cast<PointerType>(I->getType());
|
||||
const Type *ElementTy = Ty->getElementType();
|
||||
PointerType *Ty = cast<PointerType>(I->getType());
|
||||
Type *ElementTy = Ty->getElementType();
|
||||
Flags.setByValSize(TD->getTypeAllocSize(ElementTy));
|
||||
// For ByVal, alignment should be passed from FE. BE will guess if
|
||||
// this info is not there but there are cases it cannot get right.
|
||||
|
Reference in New Issue
Block a user