summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/fast-isel-x86.ll
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-04-27 22:58:38 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-04-27 22:58:38 +0000
commit456ff46e668f361f79e8e91f145152089cd7d933 (patch)
treefae7ca5096aa1013b9a8e2c1e9de77831baf76fb /test/CodeGen/X86/fast-isel-x86.ll
parent0e47cfd5b647e8480274c6b29c4e2d01c41a9e82 (diff)
downloadllvm-456ff46e668f361f79e8e91f145152089cd7d933.tar.gz
llvm-456ff46e668f361f79e8e91f145152089cd7d933.tar.bz2
llvm-456ff46e668f361f79e8e91f145152089cd7d933.tar.xz
Track worst case alignment padding more accurately.
Previously, ARMConstantIslandPass would conservatively compute the address of an aligned basic block as: RoundUpToAlignment(Offset + UnknownPadding) This worked fine for the layout algorithm itself, but it could fool the verify() function because it accounts for alignment padding twice: Once when adding the worst case UnknownPadding, and again by rounding up the fictional block offset. This meant that when optimizeThumb2Instructions would shrink an instruction, the conservative distance estimate could grow. That shouldn't be possible since the woorst case alignment padding wss already included. This patch drops the use of RoundUpToAlignment, and depends only on worst case padding to compute conservative block offsets. This has the weird effect that the computed offset for an aligned block may not be aligned. The important difference is that shrinking an instruction can never cause the estimated distance between two instructions to grow. The estimated distance is always larger than the real distance that only the assembler knows. <rdar://problem/11339352> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155744 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/fast-isel-x86.ll')
0 files changed, 0 insertions, 0 deletions