llvm-6502/utils
Jim Grosbach 6ccfc507dc 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




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109842 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-30 02:41:01 +00:00
..
bugpoint
buildit Add an explicit -sdk option to xcrun command. 2010-07-22 23:33:00 +00:00
count Fix extra fread after EOF, non-wires-crossed version. 2010-06-01 14:09:29 +00:00
crosstool
emacs
FileCheck stringref-ize the MemoryBuffer::get apis. This requires 2010-04-05 22:42:30 +00:00
FileUpdate When handling raw_ostream errors manually, use clear_error() so that 2010-05-27 20:17:28 +00:00
fpcmp Remove unnecessary uses of <iostream>. 2010-04-15 03:47:24 +00:00
git
jedit
lint
lit lit: Add some example tests for previous commit. 2010-07-22 00:40:19 +00:00
Misc
not
PerfectShuffle
TableGen Many Thumb2 instructions can reference the full ARM register set (i.e., 2010-07-30 02:41:01 +00:00
unittest Silence a warning. 2010-07-12 18:17:47 +00:00
valgrind Supress valgrind errors from python. 2010-07-29 23:15:04 +00:00
vim Make un-named values legible in certain vim configurations. 2010-07-29 17:57:57 +00:00
cgiplotNLT.pl
check-each-file
codegen-diff
countloc.sh
DSAclean.py
DSAextract.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetSourceVersion
getsrcs.sh
importNLT.pl
llvm-native-gcc
llvm-native-gxx
llvm.grm Add a polygen rule that reflects the fact that nsw and nuw can be 2010-05-04 00:13:24 +00:00
llvmdo
llvmgrep
Makefile
makellvm
mkpatch
NewNightlyTest.pl Rename "Release" builds as "Release+Asserts"; rename "Release-Asserts" 2010-07-07 07:48:00 +00:00
NightlyTest.gnuplot
NightlyTestTemplate.html
NLT.schema
OldenDataRecover.pl
parseNLT.pl
plotNLT.pl
profile.pl
RegressionFinder.pl
UpdateCMakeLists.pl
userloc.pl
webNLT.pl