LLVM backend for 6502
Go to file
Jakob Stoklund Olesen 54cfeda745 Fix liveness computations in BranchFolding.
The old code would look at kills and defs in one pass over the
instruction operands, causing problems with this code:

  %R0<def>, %CPSR<def,dead> = tLSLri %R5<kill>, 2, pred:14, pred:%noreg
  %R0<def>, %CPSR<def,dead> = tADDrr %R4<kill>, %R0<kill>, pred:14, %pred:%noreg

The last instruction kills and redefines %R0, so it is still live after
the instruction.

This caused a register scavenger crash when compiling 483.xalancbmk for
armv6. I am not including a test case because it requires too much bad
luck to expose this old bug.

First you need to convince the register allocator to use %R0 twice on
the tADDrr instruction, then you have to convince BranchFolding to do
something that causes it to run the register scavenger on he bad block.

<rdar://problem/9898200>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136973 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-05 18:47:07 +00:00
autoconf Update the default bug report url in autoconf. 2011-08-02 20:53:43 +00:00
bindings Remove InvalidateStructLayoutInfo from the ocaml bindings. 2011-07-31 01:12:39 +00:00
cmake Remove yet another buried and hidden implicit dependency: every single 2011-07-30 08:47:05 +00:00
docs Reword. 2011-08-04 10:43:43 +00:00
examples
include Temporarily revert r135528 which distinguishes between two copies of one 2011-08-05 00:51:31 +00:00
lib Fix liveness computations in BranchFolding. 2011-08-05 18:47:07 +00:00
projects
runtime Use version 402 for the GCDA files when compiling for Apple. 2011-07-28 18:12:20 +00:00
test We need to map DebugLoc. It leads to Fuction * (through subprogram entry node) which should be appropriately mapped. 2011-08-04 20:02:18 +00:00
tools Remove the LowerSetJmp pass. It wasn't used effectively by any of the targets. 2011-08-03 22:18:20 +00:00
unittests Avoid undefined behaviour if somehow NUM_GRAPHS equals 2^32 (or 2011-07-29 07:50:02 +00:00
utils LDCL_POST and STCL_POST need one's-complement offsets, rather than two's complement offsets. Add an appropriate immediate type for them. 2011-08-04 18:24:14 +00:00
website
.gitignore
build-for-llvm-top.sh
CMakeLists.txt
configure
CREDITS.TXT I am the code owner for Clang's IR generation; this has been true 2011-08-02 01:38:19 +00:00
LICENSE.TXT
llvm.spec.in
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
ModuleInfo.txt
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.