1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
Go to file
Jim Grosbach 1718345a30 Many Thumb2 instructions can reference the full ARM register set (i.e.,
have 4 bits per register in the operand encoding), but have undefined
behavior when the operand value is 13 or 15 (SP and PC, respectively).
The trivial coalescer in linear scan sometimes will merge a copy from
SP into a subsequent instruction which uses the copy, and if that
instruction cannot legally reference SP, we get bad code such as:
  mls r0,r9,r0,sp
instead of:
  mov r2, sp
  mls r0, r9, r0, r2

This patch adds a new register class for use by Thumb2 that excludes
the problematic registers (SP and PC) and is used instead of GPR
for those operands which cannot legally reference PC or SP. The
trivial coalescer explicitly requires that the register class
of the destination for the COPY instruction contain the source
register for the COPY to be considered for coalescing. This prevents
errant instructions like that above.

PR7499

llvm-svn: 109842
2010-07-30 02:41:01 +00:00
autoconf Use a C++ compiler for the atomic builtin check since we'll 2010-07-28 20:26:34 +00:00
bindings Implement the "linker_private_weak" linkage type. This will be used for 2010-07-01 21:55:59 +00:00
cmake Don't link against libm and libpthread which don't exist in BeOS/Haiku. Also, 2010-06-23 06:48:34 +00:00
docs re-commit r109220, the compile error has already been fixed 2010-07-26 18:48:07 +00:00
examples Convert some tab stops into spaces. 2010-07-12 08:16:59 +00:00
include remove a layer of cruft 2010-07-29 23:35:00 +00:00
lib Many Thumb2 instructions can reference the full ARM register set (i.e., 2010-07-30 02:41:01 +00:00
projects Remove bogus link. 2010-07-16 06:33:36 +00:00
runtime Delete a blank line. 2010-04-16 13:32:55 +00:00
test Many Thumb2 instructions can reference the full ARM register set (i.e., 2010-07-30 02:41:01 +00:00
tools Transcribe IRC to svn. Also don't print basic block names twice if they match. 2010-07-29 18:20:13 +00:00
unittests Remove the temporary hack, now that the llvm-i686-linux buildbot has 2010-07-29 22:55:29 +00:00
utils Many Thumb2 instructions can reference the full ARM register set (i.e., 2010-07-30 02:41:01 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +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 start straightening out libedis's dependencies and make it fit 2010-07-20 18:25:19 +00:00
configure Regenerate. 2010-07-28 20:26:43 +00:00
CREDITS.TXT long past time I added myself to this, I suppose. 2010-07-19 22:04:28 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in * llvm.spec.in: update blurb 2007-07-13 09:48:29 +00:00
Makefile Add support for a new Apple-style build target, EmbeddedSim, that builds 2010-07-20 20:44:02 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in typo in comment, regeneration not necessary 2010-07-07 13:58:46 +00:00
Makefile.rules Fix library build messages. 2010-07-26 20:15:47 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt (Hopefully) One last test. 2010-07-27 00:04:55 +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.