1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/test/CodeGen
Robert Lougher 68f61ad534 Fix cycle in selection DAG introduced by extractelement legalization
During selection DAG legalization, extractelement is replaced with a load
instruction.  To do this, a temporary store to the stack is used unless an
existing store is found that can be re-used.
    
If re-using a store, the chain going out of the store must be replaced by
the one going out of the new load (this ensures that any stores that must
take place after the store happens after the load, else the value might
be overwritten before it is loaded).
    
The problem is, if the extractelement index is dependent on the store
replacing the chain will introduce a cycle in the selection DAG (the load
uses the index, and by replacing the chain we will make the index dependent
on the load).
    
To fix this, if the index is dependent on the store, the store is skipped.
This is conservative as we may end up creating an unnecessary extra store
to the stack.  However, the situation is not expected to occur very often.

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

llvm-svn: 255114
2015-12-09 14:34:10 +00:00
..
AArch64 [AArch64][ARM] Don't base interleaved op legality on type alloc size. 2015-12-09 01:19:50 +00:00
AMDGPU ScheduleDAGInstrs: Rework schedule graph builder. 2015-12-04 01:51:19 +00:00
ARM [AArch64][ARM] Don't base interleaved op legality on type alloc size. 2015-12-09 01:19:50 +00:00
BPF Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
CPP
Generic Move llvm/test/CodeGen/Generic/function-alias.ll to X86. It is incompatible to PECOFF. 2015-12-04 02:00:12 +00:00
Hexagon [Hexagon] Add NewValueJump support for C4_cmpneq, C4_cmplte, C4_cmplteu 2015-12-08 16:28:32 +00:00
Inputs DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
Mips AsmPrinter: Use emitGlobalConstantFP to emit elements of constant data 2015-12-08 02:37:48 +00:00
MIR Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces. 2015-12-01 05:29:22 +00:00
MSP430 Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
NVPTX Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
PowerPC [PPC64] Convert bool literals to i32 2015-12-07 20:50:29 +00:00
SPARC Drop assert that a call with struct return goes to a function with sret 2015-10-21 20:05:01 +00:00
SystemZ llvm/test/CodeGen/SystemZ/alloca-04.ll REQUIRES asserts due to -debug-pass. 2015-11-28 13:05:49 +00:00
Thumb Fix ARMv4T (Thumb1) epilogue generation 2015-12-08 19:59:01 +00:00
Thumb2 Fix test case label check 2015-11-20 20:24:49 +00:00
WebAssembly [WebAssembly] Enable folding of offsets into global variable addresses. 2015-12-06 19:33:32 +00:00
WinEH [WinEH] Disable most forms of demotion 2015-11-19 23:23:33 +00:00
X86 Fix cycle in selection DAG introduced by extractelement legalization 2015-12-09 14:34:10 +00:00
XCore Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00