llvm-6502/lib
Jakob Stoklund Olesen 456ff46e66 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
2012-04-27 22:58:38 +00:00
..
Analysis Reapply r155682, making constant folding more consistent, with a fix to work 2012-04-27 17:50:22 +00:00
Archive
AsmParser
Bitcode
CodeGen Temporarily revert r155668: Fix the SD scheduler to avoid gluing. 2012-04-27 22:55:59 +00:00
DebugInfo
ExecutionEngine Fix incorrect call of resolveRelocation() for ARM ELF stub relocations. 2012-04-17 20:10:16 +00:00
Linker Add a flag to the struct type finder to collect only those types which have 2012-04-21 23:59:16 +00:00
MC MC assembly parser handling for trailing comma in macro instantiation. 2012-04-16 21:18:49 +00:00
Object Implement GDB integration for source level debugging of code JITed using 2012-04-16 22:12:58 +00:00
Support [Support/YAMLParser] Fix ASan found bugs. 2012-04-27 21:12:20 +00:00
TableGen Fix copy/paste-o. 2012-04-18 18:09:53 +00:00
Target Track worst case alignment padding more accurately. 2012-04-27 22:58:38 +00:00
Transforms Don't vectorize target-specific types (ppc_fp128, x86_fp80, etc.). 2012-04-27 19:34:00 +00:00
VMCore Reapply r155682, making constant folding more consistent, with a fix to work 2012-04-27 17:50:22 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile