aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/MachineFunctionAnalysis.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-12-08 00:55:02 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-12-08 00:55:02 +0000
commit540c6d9d2651310d88eb9a147177ccd52eec7cd5 (patch)
treed1d1337dae943d7ff5ef2e3358f10cbc01e8a92b /lib/CodeGen/MachineFunctionAnalysis.cpp
parent8254f02231faeb15b0abaad96a99ac9e40feb908 (diff)
Don't include alignment padding in BBInfo.Size.
Compute alignment padding before and after basic blocks dynamically. Heed basic block alignment. This simplifies bookkeeping because we don't have to constantly add and remove padding from BBInfo.Size. It also makes it possible to track the extra known alignment bits we get after a tBR_JTr terminator and when entering an aligned basic block. This makes the ARMConstantIslandPass aware of aligned basic blocks. It is tricky to model block alignment correctly when dealing with inline assembly and tBR_JTr instructions that have variable size. If inline assembly turns out to be smaller than expected, that may cause following alignment padding to be larger than expected. This could cause constant pool entries to move out of range. To avoid that problem, we use the worst case alignment padding following inline assembly. This may cause slightly suboptimal constant island placement in aligned basic blocks following inline assembly. Normal functions should be unaffected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146118 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineFunctionAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions