llvm-project/llvm/lib
Daniel Sanders de7816b0cd [mips][mips16] Fix machine verifier errors about incorrect register classes on load/stores.
Summary:
[ls][bh] and [ls][bh]u cannot use sp-relative addresses and must therefore
lower frameindex nodes such that there is a copy to a CPU16Regs register. This
is now done consistently using a separate addressing mode that does not
permit frameindex nodes.

As part of this I've had to remove an optimization that reduced the number of
instructions needed to work around the lack of sp-relative addresses on [ls][bh]
and [ls][bh]u. This optimization used one of the eight CPU16Regs registers as
a copy of the stack pointer and it's implementation was the root cause of many
of the register vs register class mismatches.

lw/sw can use sp-relative addresses but we ought to ensure that we use the
correct version of lw/sw internally for things like IAS. This is not currently
the case and this change does not fix this. However, this change does clean it
up sufficiently well to fix the machine verifier failures.

Also removed irrelevant functions from stchar.ll.

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

Differential Revision: http://reviews.llvm.org/D21062

llvm-svn: 272882
2016-06-16 10:20:59 +00:00
..
Analysis [LAA] Rename Strides to SymblicStrides in analyzeLoop. NFC 2016-06-16 08:27:03 +00:00
AsmParser IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
Bitcode IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
CodeGen Address a few coding style issues. NFC. 2016-06-15 21:14:02 +00:00
DebugInfo [Codeview] Add a class for LF_UDT_MOD_SRC_LINE. 2016-06-15 21:25:29 +00:00
ExecutionEngine IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
Fuzzer Fix test from D21194 2016-06-16 01:52:48 +00:00
IR [IR] [DAE] Copy comdats during DAE, and don't copy comdats in GlobalObject::copyAttributesFrom. 2016-06-15 23:20:15 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LTO Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
LibDriver LibDriver: Silently do nothing when provided no inputs. 2016-04-13 19:36:04 +00:00
LineEditor Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes. 2016-03-28 17:40:08 +00:00
Linker [IR] [DAE] Copy comdats during DAE, and don't copy comdats in GlobalObject::copyAttributesFrom. 2016-06-15 23:20:15 +00:00
MC Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
Object [llvm-objdump] Support detection of feature bits from the object and implement this for Mips. 2016-06-16 09:17:03 +00:00
ObjectYAML [obj2yaml] [yaml2obj] Support for MachO nlist and string table 2016-06-02 22:54:06 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
Passes [PM] Port Add discriminator pass to new PM 2016-06-15 21:51:30 +00:00
ProfileData Bug fix remove another illegal char from prof symbol name 2016-06-10 06:32:26 +00:00
Support Statistic: Add machine parseable json output 2016-06-15 20:19:16 +00:00
TableGen Avoid copies of std::strings and APInt/APFloats where we only read from it 2016-06-08 10:01:20 +00:00
Target [mips][mips16] Fix machine verifier errors about incorrect register classes on load/stores. 2016-06-16 10:20:59 +00:00
Transforms [LAA] Default getInfo to not speculate symbolic strides. NFC 2016-06-16 08:26:56 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
LLVMBuild.txt Add LLVMBuild for ObjectYAML. 2016-03-01 21:29:33 +00:00