mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-31 07:43:37 +00:00
Fix a bug where we would 'promote' an allocation from one type to another
where the second has less alignment required. If we had explicit alignment support in the IR, we could handle this case, but we can't until we do. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23960 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b53c2382a9
commit
18e78bb09e
@ -3795,10 +3795,14 @@ Instruction *InstCombiner::PromoteCastOfAllocation(CastInst &CI,
|
||||
const Type *AllocElTy = AI.getAllocatedType();
|
||||
const Type *CastElTy = PTy->getElementType();
|
||||
if (!AllocElTy->isSized() || !CastElTy->isSized()) return 0;
|
||||
|
||||
|
||||
unsigned AllocElTyAlign = TD->getTypeSize(AllocElTy);
|
||||
unsigned CastElTyAlign = TD->getTypeSize(CastElTy);
|
||||
if (CastElTyAlign < AllocElTyAlign) return 0;
|
||||
|
||||
uint64_t AllocElTySize = TD->getTypeSize(AllocElTy);
|
||||
uint64_t CastElTySize = TD->getTypeSize(CastElTy);
|
||||
|
||||
|
||||
// If the allocation is for an even multiple of the cast type size
|
||||
if (CastElTySize == 0 || AllocElTySize % CastElTySize != 0)
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user