mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-30 15:10:30 +00:00
Delete a directory that wasn't supposed to be checked in yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166591 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
aa76e9e2cf
commit
2f87640b86
@ -1268,7 +1268,7 @@ llvm::Function *createCatchWrappedInvokeFunction(llvm::Module &module,
|
|||||||
llvm::Value *unwindExceptionClass =
|
llvm::Value *unwindExceptionClass =
|
||||||
builder.CreateLoad(builder.CreateStructGEP(
|
builder.CreateLoad(builder.CreateStructGEP(
|
||||||
builder.CreatePointerCast(unwindException,
|
builder.CreatePointerCast(unwindException,
|
||||||
ourUnwindExceptionType->getPointerTo()),
|
ourUnwindExceptionType->getPointerTo(0)),
|
||||||
0));
|
0));
|
||||||
|
|
||||||
// Branch to the externalExceptionBlock if the exception is foreign or
|
// Branch to the externalExceptionBlock if the exception is foreign or
|
||||||
|
@ -389,10 +389,16 @@ public:
|
|||||||
static PointerType *getInt32PtrTy(LLVMContext &C, unsigned AS = 0);
|
static PointerType *getInt32PtrTy(LLVMContext &C, unsigned AS = 0);
|
||||||
static PointerType *getInt64PtrTy(LLVMContext &C, unsigned AS = 0);
|
static PointerType *getInt64PtrTy(LLVMContext &C, unsigned AS = 0);
|
||||||
|
|
||||||
/// getPointerTo - Return a pointer to the current type. This is equivalent
|
/// getPointerTo - Return a pointer to the current type for the given address space.
|
||||||
/// to PointerType::get(Foo, AddrSpace).
|
/// This is equivalent to PointerType::get(Foo, AddrSpace).
|
||||||
PointerType *getPointerTo(unsigned AddrSpace = 0);
|
PointerType *getPointerTo(unsigned AddrSpace);
|
||||||
|
|
||||||
|
/// getPointerTo - Return a pointer to the current type for the address space
|
||||||
|
/// space of the passed in type.
|
||||||
|
PointerType *getPointerTo(const Type *Ty);
|
||||||
|
|
||||||
|
/// getPointerTo - Retrun a pointer to the current type.
|
||||||
|
PointerType *getPointerTo();
|
||||||
private:
|
private:
|
||||||
/// isSizedDerivedType - Derived types like structures and arrays are sized
|
/// isSizedDerivedType - Derived types like structures and arrays are sized
|
||||||
/// iff all of the members of the type are sized as well. Since asking for
|
/// iff all of the members of the type are sized as well. Since asking for
|
||||||
|
@ -2068,7 +2068,7 @@ SelectionDAGLegalize::ExpandDivRemLibCall(SDNode *Node,
|
|||||||
// Also pass the return address of the remainder.
|
// Also pass the return address of the remainder.
|
||||||
SDValue FIPtr = DAG.CreateStackTemporary(RetVT);
|
SDValue FIPtr = DAG.CreateStackTemporary(RetVT);
|
||||||
Entry.Node = FIPtr;
|
Entry.Node = FIPtr;
|
||||||
Entry.Ty = RetTy->getPointerTo();
|
Entry.Ty = RetTy->getPointerTo(0);
|
||||||
Entry.isSExt = isSigned;
|
Entry.isSExt = isSigned;
|
||||||
Entry.isZExt = !isSigned;
|
Entry.isZExt = !isSigned;
|
||||||
Args.push_back(Entry);
|
Args.push_back(Entry);
|
||||||
|
@ -2320,7 +2320,7 @@ void DAGTypeLegalizer::ExpandIntRes_XMULO(SDNode *N,
|
|||||||
|
|
||||||
// Also pass the address of the overflow check.
|
// Also pass the address of the overflow check.
|
||||||
Entry.Node = Temp;
|
Entry.Node = Temp;
|
||||||
Entry.Ty = PtrTy->getPointerTo();
|
Entry.Ty = PtrTy->getPointerTo(0);
|
||||||
Entry.isSExt = true;
|
Entry.isSExt = true;
|
||||||
Entry.isZExt = false;
|
Entry.isZExt = false;
|
||||||
Args.push_back(Entry);
|
Args.push_back(Entry);
|
||||||
|
@ -586,8 +586,8 @@ Constant *GCOVProfiler::getIncrementIndirectCounterFunc() {
|
|||||||
Type *Int32Ty = Type::getInt32Ty(*Ctx);
|
Type *Int32Ty = Type::getInt32Ty(*Ctx);
|
||||||
Type *Int64Ty = Type::getInt64Ty(*Ctx);
|
Type *Int64Ty = Type::getInt64Ty(*Ctx);
|
||||||
Type *Args[] = {
|
Type *Args[] = {
|
||||||
Int32Ty->getPointerTo(), // uint32_t *predecessor
|
Int32Ty->getPointerTo(Int32Ty), // uint32_t *predecessor
|
||||||
Int64Ty->getPointerTo()->getPointerTo() // uint64_t **counters
|
Int64Ty->getPointerTo(Int64Ty)->getPointerTo(Int64Ty) // uint64_t **counters
|
||||||
};
|
};
|
||||||
FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false);
|
FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false);
|
||||||
return M->getOrInsertFunction("__llvm_gcov_indirect_counter_increment", FTy);
|
return M->getOrInsertFunction("__llvm_gcov_indirect_counter_increment", FTy);
|
||||||
@ -733,7 +733,8 @@ void GCOVProfiler::insertIndirectCounterIncrement() {
|
|||||||
Value *GEP = Builder.CreateGEP(Arg, ZExtPred);
|
Value *GEP = Builder.CreateGEP(Arg, ZExtPred);
|
||||||
Value *Counter = Builder.CreateLoad(GEP, "counter");
|
Value *Counter = Builder.CreateLoad(GEP, "counter");
|
||||||
Cond = Builder.CreateICmpEQ(Counter,
|
Cond = Builder.CreateICmpEQ(Counter,
|
||||||
Constant::getNullValue(Int64Ty->getPointerTo()));
|
Constant::getNullValue(
|
||||||
|
Int64Ty->getPointerTo(Counter->getType())));
|
||||||
Builder.CreateCondBr(Cond, Exit, CounterEnd);
|
Builder.CreateCondBr(Cond, Exit, CounterEnd);
|
||||||
|
|
||||||
// ++*counter;
|
// ++*counter;
|
||||||
|
@ -134,7 +134,8 @@ void llvm::InsertProfilingShutdownCall(Function *Callee, Module *Mod) {
|
|||||||
// types.
|
// types.
|
||||||
Type *GlobalDtorElems[2] = {
|
Type *GlobalDtorElems[2] = {
|
||||||
Type::getInt32Ty(Mod->getContext()),
|
Type::getInt32Ty(Mod->getContext()),
|
||||||
FunctionType::get(Type::getVoidTy(Mod->getContext()), false)->getPointerTo()
|
FunctionType::get(Type::getVoidTy(Mod->getContext()), false)
|
||||||
|
->getPointerTo()
|
||||||
};
|
};
|
||||||
StructType *GlobalDtorElemTy =
|
StructType *GlobalDtorElemTy =
|
||||||
StructType::get(Mod->getContext(), GlobalDtorElems, false);
|
StructType::get(Mod->getContext(), GlobalDtorElems, false);
|
||||||
|
@ -375,7 +375,7 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I) {
|
|||||||
const size_t ByteSize = 1 << Idx;
|
const size_t ByteSize = 1 << Idx;
|
||||||
const size_t BitSize = ByteSize * 8;
|
const size_t BitSize = ByteSize * 8;
|
||||||
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
||||||
Type *PtrTy = Ty->getPointerTo();
|
Type *PtrTy = Ty->getPointerTo(Addr->getType());
|
||||||
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
||||||
createOrdering(&IRB, LI->getOrdering())};
|
createOrdering(&IRB, LI->getOrdering())};
|
||||||
CallInst *C = CallInst::Create(TsanAtomicLoad[Idx],
|
CallInst *C = CallInst::Create(TsanAtomicLoad[Idx],
|
||||||
@ -390,7 +390,7 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I) {
|
|||||||
const size_t ByteSize = 1 << Idx;
|
const size_t ByteSize = 1 << Idx;
|
||||||
const size_t BitSize = ByteSize * 8;
|
const size_t BitSize = ByteSize * 8;
|
||||||
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
||||||
Type *PtrTy = Ty->getPointerTo();
|
Type *PtrTy = Ty->getPointerTo(Addr->getType());
|
||||||
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
||||||
IRB.CreateIntCast(SI->getValueOperand(), Ty, false),
|
IRB.CreateIntCast(SI->getValueOperand(), Ty, false),
|
||||||
createOrdering(&IRB, SI->getOrdering())};
|
createOrdering(&IRB, SI->getOrdering())};
|
||||||
|
@ -2763,9 +2763,9 @@ private:
|
|||||||
: II.getRawDest()->getType();
|
: II.getRawDest()->getType();
|
||||||
if (!EmitMemCpy) {
|
if (!EmitMemCpy) {
|
||||||
if (IsVectorElement)
|
if (IsVectorElement)
|
||||||
OtherPtrTy = VecTy->getElementType()->getPointerTo();
|
OtherPtrTy = VecTy->getElementType()->getPointerTo(OtherPtrTy);
|
||||||
else if (IntTy && !IsWholeAlloca)
|
else if (IntTy && !IsWholeAlloca)
|
||||||
OtherPtrTy = SubIntTy->getPointerTo();
|
OtherPtrTy = SubIntTy->getPointerTo(OtherPtrTy);
|
||||||
else
|
else
|
||||||
OtherPtrTy = NewAI.getType();
|
OtherPtrTy = NewAI.getType();
|
||||||
}
|
}
|
||||||
|
@ -777,7 +777,7 @@ SingleBlockLoopVectorizer::vectorizeLoop(LoopVectorizationLegality *Legal) {
|
|||||||
GetElementPtrInst *Gep2 = cast<GetElementPtrInst>(Gep->clone());
|
GetElementPtrInst *Gep2 = cast<GetElementPtrInst>(Gep->clone());
|
||||||
Gep2->setOperand(NumOperands - 1, LastIndex);
|
Gep2->setOperand(NumOperands - 1, LastIndex);
|
||||||
Ptr = Builder.Insert(Gep2);
|
Ptr = Builder.Insert(Gep2);
|
||||||
Ptr = Builder.CreateBitCast(Ptr, StTy->getPointerTo());
|
Ptr = Builder.CreateBitCast(Ptr, StTy->getPointerTo(Ptr->getType()));
|
||||||
Value *Val = getVectorValue(SI->getValueOperand());
|
Value *Val = getVectorValue(SI->getValueOperand());
|
||||||
Builder.CreateStore(Val, Ptr)->setAlignment(Alignment);
|
Builder.CreateStore(Val, Ptr)->setAlignment(Alignment);
|
||||||
break;
|
break;
|
||||||
@ -806,7 +806,7 @@ SingleBlockLoopVectorizer::vectorizeLoop(LoopVectorizationLegality *Legal) {
|
|||||||
GetElementPtrInst *Gep2 = cast<GetElementPtrInst>(Gep->clone());
|
GetElementPtrInst *Gep2 = cast<GetElementPtrInst>(Gep->clone());
|
||||||
Gep2->setOperand(NumOperands - 1, LastIndex);
|
Gep2->setOperand(NumOperands - 1, LastIndex);
|
||||||
Ptr = Builder.Insert(Gep2);
|
Ptr = Builder.Insert(Gep2);
|
||||||
Ptr = Builder.CreateBitCast(Ptr, RetTy->getPointerTo());
|
Ptr = Builder.CreateBitCast(Ptr, RetTy->getPointerTo(Ptr->getType()));
|
||||||
LI = Builder.CreateLoad(Ptr);
|
LI = Builder.CreateLoad(Ptr);
|
||||||
LI->setAlignment(Alignment);
|
LI->setAlignment(Alignment);
|
||||||
// Use this vector value for all users of the load.
|
// Use this vector value for all users of the load.
|
||||||
|
@ -1673,7 +1673,7 @@ Constant *ConstantExpr::getAlignOf(Type* Ty) {
|
|||||||
// Note that a non-inbounds gep is used, as null isn't within any object.
|
// Note that a non-inbounds gep is used, as null isn't within any object.
|
||||||
Type *AligningTy =
|
Type *AligningTy =
|
||||||
StructType::get(Type::getInt1Ty(Ty->getContext()), Ty, NULL);
|
StructType::get(Type::getInt1Ty(Ty->getContext()), Ty, NULL);
|
||||||
Constant *NullPtr = Constant::getNullValue(AligningTy->getPointerTo());
|
Constant *NullPtr = Constant::getNullValue(AligningTy->getPointerTo(Ty));
|
||||||
Constant *Zero = ConstantInt::get(Type::getInt64Ty(Ty->getContext()), 0);
|
Constant *Zero = ConstantInt::get(Type::getInt64Ty(Ty->getContext()), 0);
|
||||||
Constant *One = ConstantInt::get(Type::getInt32Ty(Ty->getContext()), 1);
|
Constant *One = ConstantInt::get(Type::getInt32Ty(Ty->getContext()), 1);
|
||||||
Constant *Indices[2] = { Zero, One };
|
Constant *Indices[2] = { Zero, One };
|
||||||
|
@ -779,6 +779,28 @@ PointerType *Type::getPointerTo(unsigned addrs) {
|
|||||||
return PointerType::get(this, addrs);
|
return PointerType::get(this, addrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PointerType *Type::getPointerTo(const Type *Ty) {
|
||||||
|
unsigned AS = 0;
|
||||||
|
// For pointers, we return a new pointer based on the address space.
|
||||||
|
if (Ty->isPointerTy()) AS = Ty->getPointerAddressSpace();
|
||||||
|
// For vector of pointers, we return a new pointer based on the
|
||||||
|
// address space of the element pointer type.
|
||||||
|
if (Ty->isVectorTy())
|
||||||
|
AS = Ty->getVectorElementType()->getPointerAddressSpace();
|
||||||
|
// Otherwise return a pointer based on the default address space
|
||||||
|
// since we want a pointer to the current type without having
|
||||||
|
// a type that can give us the correct address space.
|
||||||
|
// An example of this occuring is that you want to get a pointer to
|
||||||
|
// all of the arguments in a function. However, the PointerType
|
||||||
|
// for a non-pointer type cannot be determined by the type, so
|
||||||
|
// the default value is used.
|
||||||
|
return getPointerTo(AS);
|
||||||
|
}
|
||||||
|
|
||||||
|
PointerType *Type::getPointerTo() {
|
||||||
|
return getPointerTo(this);
|
||||||
|
}
|
||||||
|
|
||||||
bool PointerType::isValidElementType(Type *ElemTy) {
|
bool PointerType::isValidElementType(Type *ElemTy) {
|
||||||
return !ElemTy->isVoidTy() && !ElemTy->isLabelTy() &&
|
return !ElemTy->isVoidTy() && !ElemTy->isLabelTy() &&
|
||||||
!ElemTy->isMetadataTy();
|
!ElemTy->isMetadataTy();
|
||||||
|
@ -434,7 +434,8 @@ void Verifier::visitGlobalVariable(GlobalVariable &GV) {
|
|||||||
if (ArrayType *ATy = dyn_cast<ArrayType>(GV.getType())) {
|
if (ArrayType *ATy = dyn_cast<ArrayType>(GV.getType())) {
|
||||||
StructType *STy = dyn_cast<StructType>(ATy->getElementType());
|
StructType *STy = dyn_cast<StructType>(ATy->getElementType());
|
||||||
PointerType *FuncPtrTy =
|
PointerType *FuncPtrTy =
|
||||||
FunctionType::get(Type::getVoidTy(*Context), false)->getPointerTo();
|
FunctionType::get(Type::getVoidTy(*Context), false)
|
||||||
|
->getPointerTo(GV.getType());
|
||||||
Assert1(STy && STy->getNumElements() == 2 &&
|
Assert1(STy && STy->getNumElements() == 2 &&
|
||||||
STy->getTypeAtIndex(0u)->isIntegerTy(32) &&
|
STy->getTypeAtIndex(0u)->isIntegerTy(32) &&
|
||||||
STy->getTypeAtIndex(1) == FuncPtrTy,
|
STy->getTypeAtIndex(1) == FuncPtrTy,
|
||||||
|
Loading…
Reference in New Issue
Block a user