LLVM backend for 6502
Go to file
Jakob Stoklund Olesen 4662a9f270 Allow coalescing with reserved physregs in certain cases:
When a virtual register has a single value that is defined as a copy of a
reserved register, permit that copy to be joined. These virtual register are
usually copies of the stack pointer:

  %vreg75<def> = COPY %ESP; GR32:%vreg75
  MOV32mr %vreg75, 1, %noreg, 0, %noreg, %vreg74<kill>
  MOV32mi %vreg75, 1, %noreg, 8, %noreg, 0
  MOV32mi %vreg75<kill>, 1, %noreg, 4, %noreg, 0
  CALLpcrel32 ...

Coalescing these virtual registers early decreases register pressure.
Previously, they were coalesced by RALinScan::attemptTrivialCoalescing after
register allocation was completed.

The lower register pressure causes the mcinst-lowering-cmp0.ll test case to fail
because it depends on linear scan spilling a particular register.

I am deleting 2008-08-05-SpillerBug.ll because it is counting the number of
instructions emitted, and its revision history shows the 'correct' count being
edited many times.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128845 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-04 21:00:03 +00:00
autoconf Check that the AsmParser exists for the native target to enable initialization 2011-03-14 22:12:35 +00:00
bindings Fix compiling the ocaml kaleidoscope tutorials 2011-02-09 18:32:02 +00:00
cmake Fix typos on LLVM.cmake. Export LLVM_ON_UNIX & LLVM_ON_WIN32. 2011-04-03 16:12:38 +00:00
docs Dragonegg release notes. 2011-04-04 11:09:08 +00:00
examples Remove PHINode::reserveOperandSpace(). Instead, add a parameter to 2011-03-30 11:28:46 +00:00
include Stop caching basic block index ranges now that SlotIndexes can keep up. 2011-04-04 15:32:15 +00:00
lib Allow coalescing with reserved physregs in certain cases: 2011-04-04 21:00:03 +00:00
projects Regen configure 2010-12-12 21:42:01 +00:00
runtime Implementation of path profiling. 2011-01-29 01:09:53 +00:00
test Allow coalescing with reserved physregs in certain cases: 2011-04-04 21:00:03 +00:00
tools Update BreakpointPrinter to emit original function names only. 2011-04-04 19:51:17 +00:00
unittests While testing dragonegg I noticed that isCastable and getCastOpcode 2011-04-01 03:34:54 +00:00
utils Add support for the VIA PadLock instructions. 2011-04-04 16:58:13 +00:00
website
.gitignore Cleanup and document .gitignore. 2010-12-17 17:22:50 +00:00
build-for-llvm-top.sh Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
CMakeLists.txt Supports building with a list of targets that does not contain 2011-03-23 17:42:13 +00:00
configure Check that the AsmParser exists for the native target to enable initialization 2011-03-14 22:12:35 +00:00
CREDITS.TXT Another git svn dcommit test. This time let's hope it doesn't kill my repo. 2010-12-10 14:45:10 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in
Makefile Merge System into Support. 2010-11-29 18:16:10 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in autoconf: Add --disable-embed-stdcxx to suppress linking libstdc++.a into llvm.dll with --enable-shared on Cygming. 2010-12-29 03:59:14 +00:00
Makefile.rules Makefile.rules: [PR2928] "make install" may install include files along explicit pattern, not to install CMake's building stuff. 2011-03-09 09:11:27 +00:00
ModuleInfo.txt Remove trailing space. This is just an excuse to poke the 2010-10-05 20:32:15 +00:00
README.txt Test commit. 2011-02-11 19:11:57 +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.