llvm-project/llvm/lib
Juergen Ributzka 4f1a54a41a [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.

llvm-svn: 216634
2014-08-28 00:09:46 +00:00
..
Analysis InstSimplify: Don't simplify gep X, (Y-X) to Y if types differ 2014-08-27 20:08:34 +00:00
AsmParser Pass a MemoryBufferRef when we can avoid taking ownership. 2014-08-26 21:49:01 +00:00
Bitcode Fix a double free in llvm::getBitcodeTargetTriple. 2014-08-27 21:11:13 +00:00
CodeGen [FastISel] 2014-08-28 00:09:46 +00:00
DebugInfo Don't own the buffer in object::Binary. 2014-08-19 18:44:46 +00:00
ExecutionEngine Fix unaligned reads/writes in X86JIT and RuntimeDyldELF. 2014-08-27 23:06:08 +00:00
IR Return a std::unique_ptr when creating a new MemoryBuffer. 2014-08-27 20:03:13 +00:00
IRReader Pass a std::unique_ptr<MemoryBuffer>& to getLazyBitcodeModule. 2014-08-26 22:00:09 +00:00
LTO Return a std::unique_ptr when creating a new MemoryBuffer. 2014-08-27 20:03:13 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker Set comdats when lazily linking functions. 2014-08-15 20:17:08 +00:00
MC Return a std::unique_ptr when creating a new MemoryBuffer. 2014-08-27 20:03:13 +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 Fix PR17239 by changing the semantics of the RemainingArgsClass Option kind 2014-08-22 19:29:17 +00:00
ProfileData llvm-cov: add code coverage tool that's based on coverage mapping format and clang's pgo. 2014-08-22 22:56:03 +00:00
Support Return a std::unique_ptr when creating a new MemoryBuffer. 2014-08-27 20:03:13 +00:00
TableGen Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
Target Revert "[FastISel][AArch64] Don't fold instructions too aggressively into the memory operation." 2014-08-27 23:09:40 +00:00
Transforms InstCombine: Combine gep X, (Y-X) to Y 2014-08-27 20:08:37 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00