LLVM backend for 6502
Go to file
Jakob Stoklund Olesen 540c6d9d26 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
2011-12-08 00:55:02 +00:00
autoconf configure: Don't warn about compiler-rt checked out into projects/. 2011-12-07 22:07:03 +00:00
bindings
cmake
docs Also pass in correct initializer here. 2011-12-07 18:18:11 +00:00
examples EngineBuilder: support for custom TargetOptions. Fixes the 2011-12-07 23:58:57 +00:00
include Fix 80-column. 2011-12-08 00:38:45 +00:00
lib Don't include alignment padding in BBInfo.Size. 2011-12-08 00:55:02 +00:00
projects
runtime
test ARM optional destination operand variants for VEXT instructions. 2011-12-08 00:43:47 +00:00
tools Update bcanalyzer to handle new USELIST_BLOCK/USELIST_CODE_ENTRY. 2011-12-07 21:45:13 +00:00
unittests Add support for vectors of pointers. 2011-12-05 06:29:09 +00:00
utils ARM: NEON SHLL instruction immediate operand range checking. 2011-12-07 01:07:24 +00:00
.gitignore
CMakeLists.txt llvm-config: Replace with C++ version (was llvm-config-2). 2011-12-01 20:18:09 +00:00
configure configure: Don't warn about compiler-rt checked out into projects/. 2011-12-07 22:07:03 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile llvm-config: Replace with C++ version (was llvm-config-2). 2011-12-01 20:18:09 +00:00
Makefile.common
Makefile.config.in
Makefile.rules Add a deterministic finite automaton based packetizer for VLIW architectures 2011-12-01 21:10:21 +00:00
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.