mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-01 18:12:49 +00:00
Fix Transforms/ScalarRepl/union-pointer.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35906 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
159b0a4340
commit
ab46275683
@ -1002,6 +1002,11 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
|
||||
ConstantInt::get(Type::Int32Ty, Elt),
|
||||
"tmp", SI);
|
||||
}
|
||||
} else if (isa<PointerType>(AllocaType)) {
|
||||
// If the alloca type is a pointer, then all the elements must be
|
||||
// pointers.
|
||||
if (SV->getType() != AllocaType)
|
||||
SV = new BitCastInst(SV, AllocaType, SV->getName(), SI);
|
||||
} else {
|
||||
Value *Old = new LoadInst(NewAI, NewAI->getName()+".in", SI);
|
||||
|
||||
@ -1013,12 +1018,8 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
|
||||
if (SV->getType()->isFloatingPoint())
|
||||
SV = new BitCastInst(SV, IntegerType::get(SrcWidth),
|
||||
SV->getName(), SI);
|
||||
else if (isa<PointerType>(SV->getType())) {
|
||||
if (isa<PointerType>(AllocaType))
|
||||
SV = new BitCastInst(SV, AllocaType, SV->getName(), SI);
|
||||
else
|
||||
SV = new PtrToIntInst(SV, TD.getIntPtrType(), SV->getName(), SI);
|
||||
}
|
||||
else if (isa<PointerType>(SV->getType()))
|
||||
SV = new PtrToIntInst(SV, TD.getIntPtrType(), SV->getName(), SI);
|
||||
|
||||
// Always zero extend the value if needed.
|
||||
if (SV->getType() != AllocaType)
|
||||
|
Loading…
x
Reference in New Issue
Block a user