mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
At the point of calculating the shift amount, the
type of SV has changed from what it originally was. However we need the store width of the original. llvm-svn: 43775
This commit is contained in:
parent
3609f43f5c
commit
59b08debe3
@ -1179,6 +1179,8 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
|
||||
// here.
|
||||
unsigned SrcWidth = TD.getTypeSizeInBits(SV->getType());
|
||||
unsigned DestWidth = TD.getTypeSizeInBits(AllocaType);
|
||||
unsigned SrcStoreWidth = TD.getTypeStoreSizeInBits(SV->getType());
|
||||
unsigned DestStoreWidth = TD.getTypeStoreSizeInBits(AllocaType);
|
||||
if (SV->getType()->isFloatingPoint())
|
||||
SV = new BitCastInst(SV, IntegerType::get(SrcWidth),
|
||||
SV->getName(), SI);
|
||||
@ -1196,8 +1198,7 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) {
|
||||
// On big-endian machines, the lowest bit is stored at the bit offset
|
||||
// from the pointer given by getTypeStoreSizeInBits. This matters for
|
||||
// integers with a bitwidth that is not a multiple of 8.
|
||||
ShAmt = TD.getTypeStoreSizeInBits(AllocaType) -
|
||||
TD.getTypeStoreSizeInBits(SV->getType()) - Offset;
|
||||
ShAmt = DestStoreWidth - SrcStoreWidth - Offset;
|
||||
} else {
|
||||
ShAmt = Offset;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user