mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:49:45 +00:00
Remove a wrapper around getIntPtrType added to GVN by Hal in commit 166624 (the
wrapper returns a vector of integers when passed a vector of pointers) by having getIntPtrType itself return a vector of integers in this case. Outside of this wrapper, I didn't find anywhere in the codebase that was relying on the old behaviour for vectors of pointers, so give this a whirl through the buildbots. llvm-svn: 166939
This commit is contained in:
parent
373d870759
commit
e6f6a2ecdc
@ -341,13 +341,14 @@ public:
|
||||
///
|
||||
unsigned getPreferredTypeAlignmentShift(Type *Ty) const;
|
||||
|
||||
/// getIntPtrType - Return an integer type that is the same size or
|
||||
/// greater to the pointer size based on the address space.
|
||||
/// getIntPtrType - Return an integer type with size at least as big as that
|
||||
/// of a pointer in the given address space.
|
||||
IntegerType *getIntPtrType(LLVMContext &C, unsigned AddressSpace) const;
|
||||
|
||||
/// getIntPtrType - Return an integer type that is the same size or
|
||||
/// greater to the pointer size based on the Type.
|
||||
IntegerType *getIntPtrType(Type *) const;
|
||||
/// getIntPtrType - Return an integer (vector of integer) type with size at
|
||||
/// least as big as that of a pointer of the given pointer (vector of pointer)
|
||||
/// type.
|
||||
Type *getIntPtrType(Type *) const;
|
||||
|
||||
/// getIndexedOffset - return the offset from the beginning of the type for
|
||||
/// the specified indices. This is used to implement getelementptr.
|
||||
|
@ -457,7 +457,7 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||
break; // Strip out annotate intrinsic
|
||||
|
||||
case Intrinsic::memcpy: {
|
||||
IntegerType *IntPtr = TD.getIntPtrType(CI->getArgOperand(0)->getType());
|
||||
Type *IntPtr = TD.getIntPtrType(CI->getArgOperand(0)->getType());
|
||||
Value *Size = Builder.CreateIntCast(CI->getArgOperand(2), IntPtr,
|
||||
/* isSigned */ false);
|
||||
Value *Ops[3];
|
||||
@ -468,7 +468,7 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||
break;
|
||||
}
|
||||
case Intrinsic::memmove: {
|
||||
IntegerType *IntPtr = TD.getIntPtrType(CI->getArgOperand(0)->getType());
|
||||
Type *IntPtr = TD.getIntPtrType(CI->getArgOperand(0)->getType());
|
||||
Value *Size = Builder.CreateIntCast(CI->getArgOperand(2), IntPtr,
|
||||
/* isSigned */ false);
|
||||
Value *Ops[3];
|
||||
@ -479,7 +479,7 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||
break;
|
||||
}
|
||||
case Intrinsic::memset: {
|
||||
IntegerType *IntPtr = TD.getIntPtrType(CI->getArgOperand(0)->getType());
|
||||
Type *IntPtr = TD.getIntPtrType(CI->getArgOperand(0)->getType());
|
||||
Value *Size = Builder.CreateIntCast(CI->getArgOperand(2), IntPtr,
|
||||
/* isSigned */ false);
|
||||
Value *Ops[3];
|
||||
|
@ -143,7 +143,7 @@ bool BoundsChecking::instrument(Value *Ptr, Value *InstVal) {
|
||||
Value *Offset = SizeOffset.second;
|
||||
ConstantInt *SizeCI = dyn_cast<ConstantInt>(Size);
|
||||
|
||||
IntegerType *IntTy = TD->getIntPtrType(Ptr->getType());
|
||||
Type *IntTy = TD->getIntPtrType(Ptr->getType());
|
||||
Value *NeededSizeVal = ConstantInt::get(IntTy, NeededSize);
|
||||
|
||||
// three checks are required to ensure safety:
|
||||
|
@ -746,16 +746,6 @@ static bool CanCoerceMustAliasedValueToLoad(Value *StoredVal,
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Wrap TD.getIntPtrType, but return a vector type for vector inputs.
|
||||
static Type *getIntPtrType(Type *Ty, const DataLayout &TD) {
|
||||
Type *ITy = TD.getIntPtrType(Ty);
|
||||
if (Ty->isVectorTy()) {
|
||||
ITy = VectorType::get(ITy, Ty->getVectorNumElements());
|
||||
}
|
||||
|
||||
return ITy;
|
||||
}
|
||||
|
||||
/// CoerceAvailableValueToLoadType - If we saw a store of a value to memory, and
|
||||
/// then a load from a must-aliased pointer of a different type, try to coerce
|
||||
/// the stored value. LoadedTy is the type of the load we want to replace and
|
||||
@ -784,13 +774,13 @@ static Value *CoerceAvailableValueToLoadType(Value *StoredVal,
|
||||
|
||||
// Convert source pointers to integers, which can be bitcast.
|
||||
if (StoredValTy->getScalarType()->isPointerTy()) {
|
||||
StoredValTy = getIntPtrType(StoredValTy, TD);
|
||||
StoredValTy = TD.getIntPtrType(StoredValTy);
|
||||
StoredVal = new PtrToIntInst(StoredVal, StoredValTy, "", InsertPt);
|
||||
}
|
||||
|
||||
Type *TypeToCastTo = LoadedTy;
|
||||
if (TypeToCastTo->getScalarType()->isPointerTy())
|
||||
TypeToCastTo = getIntPtrType(StoredValTy, TD);
|
||||
TypeToCastTo = TD.getIntPtrType(StoredValTy);
|
||||
|
||||
if (StoredValTy != TypeToCastTo)
|
||||
StoredVal = new BitCastInst(StoredVal, TypeToCastTo, "", InsertPt);
|
||||
@ -809,7 +799,7 @@ static Value *CoerceAvailableValueToLoadType(Value *StoredVal,
|
||||
|
||||
// Convert source pointers to integers, which can be manipulated.
|
||||
if (StoredValTy->getScalarType()->isPointerTy()) {
|
||||
StoredValTy = getIntPtrType(StoredValTy, TD);
|
||||
StoredValTy = TD.getIntPtrType(StoredValTy);
|
||||
StoredVal = new PtrToIntInst(StoredVal, StoredValTy, "", InsertPt);
|
||||
}
|
||||
|
||||
@ -1031,7 +1021,7 @@ static Value *GetStoreValueForLoad(Value *SrcVal, unsigned Offset,
|
||||
// to an integer type to start with.
|
||||
if (SrcVal->getType()->getScalarType()->isPointerTy())
|
||||
SrcVal = Builder.CreatePtrToInt(SrcVal,
|
||||
getIntPtrType(SrcVal->getType(), TD));
|
||||
TD.getIntPtrType(SrcVal->getType()));
|
||||
if (!SrcVal->getType()->isIntegerTy())
|
||||
SrcVal = Builder.CreateBitCast(SrcVal, IntegerType::get(Ctx, StoreSize*8));
|
||||
|
||||
|
@ -392,7 +392,7 @@ static ConstantInt *GetConstantInt(Value *V, const DataLayout *TD) {
|
||||
|
||||
// This is some kind of pointer constant. Turn it into a pointer-sized
|
||||
// ConstantInt if possible.
|
||||
IntegerType *PtrTy = TD->getIntPtrType(V->getType());
|
||||
IntegerType *PtrTy = cast<IntegerType>(TD->getIntPtrType(V->getType()));
|
||||
|
||||
// Null pointer means 0, see SelectionDAGBuilder::getValue(const Value*).
|
||||
if (isa<ConstantPointerNull>(V))
|
||||
|
@ -668,18 +668,22 @@ unsigned DataLayout::getPreferredTypeAlignmentShift(Type *Ty) const {
|
||||
return Log2_32(Align);
|
||||
}
|
||||
|
||||
/// getIntPtrType - Return an integer type that is the same size or
|
||||
/// greater to the pointer size for the address space.
|
||||
/// getIntPtrType - Return an integer type with size at least as big as that
|
||||
/// of a pointer in the given address space.
|
||||
IntegerType *DataLayout::getIntPtrType(LLVMContext &C,
|
||||
unsigned AddressSpace) const {
|
||||
return IntegerType::get(C, getPointerSizeInBits(AddressSpace));
|
||||
}
|
||||
|
||||
/// getIntPtrType - Return an integer type that is the same size or
|
||||
/// greater to the pointer size of the specific PointerType.
|
||||
IntegerType *DataLayout::getIntPtrType(Type *Ty) const {
|
||||
/// getIntPtrType - Return an integer (vector of integer) type with size at
|
||||
/// least as big as that of a pointer of the given pointer (vector of pointer)
|
||||
/// type.
|
||||
Type *DataLayout::getIntPtrType(Type *Ty) const {
|
||||
unsigned NumBits = getPointerTypeSizeInBits(Ty);
|
||||
return IntegerType::get(Ty->getContext(), NumBits);
|
||||
IntegerType *IntTy = IntegerType::get(Ty->getContext(), NumBits);
|
||||
if (VectorType *VecTy = dyn_cast<VectorType>(Ty))
|
||||
return VectorType::get(IntTy, VecTy->getNumElements());
|
||||
return IntTy;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user