llvm-6502/include/llvm
Juergen Ributzka d24494d672 [FastISel]
Currently instructions are folded very aggressively for AArch64 into the memory
operation, which can lead to the use of killed operands:
  %vreg1<def> = ADDXri %vreg0<kill>, 2
  %vreg2<def> = LDRBBui %vreg0, 2
  ... = ... %vreg1 ...

This usually happens when the result is also used by another non-memory
instruction in the same basic block, or any instruction in another basic block.

This fix teaches hasTrivialKill to not only check the LLVM IR that the value has
a single use, but also to check if the register that represents that value has
already been used. This can happen when the instruction with the use was folded
into another instruction (in this particular case a load instruction).

This fixes rdar://problem/18142857.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216634 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-28 00:09:46 +00:00
..
ADT Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 05:25:25 +00:00
Analysis Revert "Analysis: unique_ptr-ify DependenceAnalysis::collectCoeffInfo" 2014-08-26 02:03:38 +00:00
AsmParser Pass a MemoryBufferRef when we can avoid taking ownership. 2014-08-26 21:49:01 +00:00
Bitcode Pass a std::unique_ptr<MemoryBuffer>& to getLazyBitcodeModule. 2014-08-26 22:00:09 +00:00
CodeGen [FastISel] 2014-08-28 00:09:46 +00:00
Config Regenerate autoconf, previous updates to the configury haven't 2014-07-28 22:00:44 +00:00
DebugInfo Use a reference instead of a pointer. 2014-07-31 20:19:36 +00:00
ExecutionEngine Return a std::unique_ptr when creating a new MemoryBuffer. 2014-08-27 20:03:13 +00:00
IR Reland r216439 215441, majnemer has a real fix for PR20771. 2014-08-27 20:06:19 +00:00
IRReader Pass a MemoryBufferRef when we can avoid taking ownership. 2014-08-26 21:49:01 +00:00
LineEditor [C++11] Replace OwningPtr with std::unique_ptr in places where it doesn't break the API. 2014-04-21 09:34:48 +00:00
Linker IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
LTO Fix some cases were ArrayRefs were being passed by reference. Also remove 'const' from some other ArrayRef uses since its implicitly const already. 2014-08-27 05:25:00 +00:00
MC Convert MC command line option for fatal assembler warnings into a 2014-08-26 18:39:50 +00:00
Object Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 05:25:25 +00:00
Option Option: Propagate flags from groups to options in each group 2014-07-12 00:18:58 +00:00
ProfileData Coverage Mapping: add function's hash to coverage function records. 2014-08-21 19:23:25 +00:00
Support Fix unaligned reads/writes in X86JIT and RuntimeDyldELF. 2014-08-27 23:06:08 +00:00
TableGen TableGen: unique_ptr-ify RecordKeeper 2014-08-24 19:10:57 +00:00
Target name change: isPow2DivCheap -> isPow2SDivCheap 2014-08-21 22:31:48 +00:00
Transforms Move some logic to populateLTOPassManager. 2014-08-21 20:03:44 +00:00
CMakeLists.txt Remove llvm_headers_do_not_build for the benefit of XCode and Visual Studio users. 2014-08-14 00:51:47 +00:00
InitializePasses.h Rename AtomicExpandLoadLinked into AtomicExpand 2014-08-21 21:50:01 +00:00
LinkAllIR.h
LinkAllPasses.h Move -verify-use-list-order into llvm-uselistorder 2014-07-25 17:13:03 +00:00
module.modulemap [modules] Update module map workaround to cope with the problematic file having 2014-08-07 20:27:08 +00:00
module.modulemap.build [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
Pass.h Revert "[PM] Add pass run listeners to the pass manager." 2014-05-15 17:49:20 +00:00
PassAnalysisSupport.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
PassInfo.h Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
PassManager.h
PassRegistry.h Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
PassSupport.h Move GlobalMerge from Transform to CodeGen. 2014-06-13 22:57:59 +00:00