mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-02 00:37:09 +00:00
Fix address calculation error from r155744.
This was exposed by SingleSource/UnitTests/Vector/constpool.c. The computed size of a basic block isn't always a multiple of its known alignment, and that can introduce extra alignment padding after the block. <rdar://problem/11347135> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155845 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e4f1b370bf
commit
887d095fb6
@ -124,7 +124,12 @@ namespace {
|
||||
/// This number should be used to predict worst case padding when
|
||||
/// splitting the block.
|
||||
unsigned internalKnownBits() const {
|
||||
return Unalign ? Unalign : KnownBits;
|
||||
unsigned Bits = Unalign ? Unalign : KnownBits;
|
||||
// If the block size isn't a multiple of the known bits, assume the
|
||||
// worst case padding.
|
||||
if (Size & ((1u << Bits) - 1))
|
||||
Bits = CountTrailingZeros_32(Size);
|
||||
return Bits;
|
||||
}
|
||||
|
||||
/// Compute the offset immediately following this block. If LogAlign is
|
||||
|
Loading…
Reference in New Issue
Block a user