Consider unknown alignment caused by OptimizeThumb2Instructions().
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 10 Jan 2012 22:32:14 +0000 (22:32 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 10 Jan 2012 22:32:14 +0000 (22:32 +0000)
commit19d0bf3a9273d337b776ca33c284fd2b5da485ab
tree4a52e45f1a517a6d6c51ffb88500c84ab3d44da1
parent75fda5dcaebf3daafdbd06f44e89c7683b1be770
Consider unknown alignment caused by OptimizeThumb2Instructions().

This function runs after all constant islands have been placed, and may
shrink some instructions to their 2-byte forms.  This can actually cause
some constant pool entries to move out of range because of growing
alignment padding.

Treat instructions that may be shrunk the same as inline asm - they
erode the known alignment bits.

Also reinstate an old assertion in verify(). It is correct now that
basic block offsets include alignments.

Add a single large test case that will hopefully exercise many parts of
the constant island pass.

<rdar://problem/10670199>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147885 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMConstantIslandPass.cpp
test/CodeGen/Thumb2/constant-islands.ll [new file with mode: 0644]