LLVM backend for 6502
Go to file
Chandler Carruth b5856c83ff Teach machine block placement to cope with unnatural loops. These don't
get loop info structures associated with them, and so we need some way
to make forward progress selecting and placing basic blocks. The
technique used here is pretty brutal -- it just scans the list of blocks
looking for the first unplaced candidate. It keeps placing blocks like
this until the CFG becomes tractable.

The cost is somewhat unfortunate, it requires allocating a vector of all
basic block pointers eagerly. I have some ideas about how to simplify
and optimize this, but I'm trying to get the logic correct first.

Thanks to Benjamin Kramer for the reduced test case out of GCC. Sadly
there are other bugs that GCC is tickling that I'm reducing and working
on now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144516 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-14 00:00:35 +00:00
autoconf Add an option '--enable-libcpp' that will have the compiler pass on 2011-11-11 22:51:42 +00:00
bindings Minor fixes in Makefiles for the OCaml bindings: 2011-11-09 12:00:39 +00:00
cmake Fix CRT selection logic when using CMake NMake generator. 2011-11-06 23:37:22 +00:00
docs LLVMBuild: Add explicit information on whether targets define an assembly printer, assembly parser, or disassembler. 2011-11-11 00:23:56 +00:00
examples build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
include Fix comment for LegalizeTypeAction enum. 2011-11-13 22:11:24 +00:00
lib Teach machine block placement to cope with unnatural loops. These don't 2011-11-14 00:00:35 +00:00
projects build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
runtime PathProfiling.c: Get rid of using "inline". We may expect compiler shall optimize out "static" scope w/o "inline". 2011-11-08 12:03:14 +00:00
test Teach machine block placement to cope with unnatural loops. These don't 2011-11-14 00:00:35 +00:00
tools llvm-config-2: Detect when we are running out of a BuildTools development tree, so that we can always provide library/include information for the real build directory. 2011-11-11 22:59:47 +00:00
unittests unittests/MultiJITTest.cpp: Tweak how to check symbol value for Win32 --enable-shared. 2011-11-09 08:30:43 +00:00
utils LLVMBuild: Add info for gtest. 2011-11-12 02:11:04 +00:00
.gitignore git: Add tools/lldb to the ignore list. 2011-11-10 22:55:50 +00:00
CMakeLists.txt Revert r144300 "llvm-config: Replace with C++ version (was llvm-config-2).", 2011-11-10 19:59:35 +00:00
configure Add an option '--enable-libcpp' that will have the compiler pass on 2011-11-11 22:51:42 +00:00
CREDITS.TXT CREDITS.TXT: Add a line. (test commit) 2011-10-29 23:42:14 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
Makefile build/Make: Define a TARGET_NATIVE_ARCH variable to be a bit more precise than 2011-11-12 00:18:02 +00:00
Makefile.common
Makefile.config.in build/Make: Define a TARGET_NATIVE_ARCH variable to be a bit more precise than 2011-11-12 00:18:02 +00:00
Makefile.rules build/Make: Define a TARGET_NATIVE_ARCH variable to be a bit more precise than 2011-11-12 00:18:02 +00:00
README.txt test commit undo 2011-11-10 20:39:51 +00:00

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.