llvm-project/llvm/test/CodeGen
Matt Arsenault d9c830154f Make MergeConsecutiveStores look at other stores on same chain
When combiner AA is enabled, look at stores on the same chain.
Non-aliasing stores are moved to the same chain so the existing
code fails because it expects to find an adajcent store on a consecutive
chain.

Because of how DAGCombiner tries these store combines,
MergeConsecutiveStores doesn't see the correct set of stores on the chain
when it visits the other stores. Each store individually has its chain
fixed before trying to merge consecutive stores, and then tries to merge
stores from that point before the other stores have been processed to
have their chains fixed. To fix this, attempt to use FindBetterChain
on any possibly neighboring stores in visitSTORE.

Suppose you have 4 32-bit stores that should be merged into 1 vector
store. One store would be visited first, fixing the chain. What happens is
because not all of the store chains have yet been fixed, 2 of the stores
are merged. The other 2 stores later have their chains fixed,
but because the other stores were already merged, they have different
memory types and merging the two different sized stores is not
supported and would be more difficult to handle.

llvm-svn: 246307
2015-08-28 17:31:28 +00:00
..
AArch64 [AArch64][CollectLOH] Fix a regression that prevented us to detect chains of 2015-08-27 23:47:10 +00:00
AMDGPU AMDGPU/SI: Add test for folding constants into operands 2015-08-27 17:41:27 +00:00
ARM Assign weights to edges to jump table / bit test header when lowering switch statement. 2015-08-26 23:15:32 +00:00
BPF [bpf] rename triple names bpf_be -> bpfeb 2015-06-05 16:11:14 +00:00
CPP [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
Generic Update test suite to make "ninja check" succeed without native backend builtin 2015-08-04 06:32:54 +00:00
Hexagon DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
Inputs DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
MIR MIR Serialization: Serialize the pointer IR expression values in the machine 2015-08-21 21:54:12 +00:00
MSP430
Mips Assign weights to edges to jump table / bit test header when lowering switch statement. 2015-08-26 23:15:32 +00:00
NVPTX [NVPTX] Let NVPTX backend detect integer min and max patterns. 2015-08-26 23:22:02 +00:00
PowerPC Make MergeConsecutiveStores look at other stores on same chain 2015-08-28 17:31:28 +00:00
SPARC [SPARC] Fix stupid oversight in stack realignment support. 2015-08-26 17:57:51 +00:00
SystemZ Make MergeConsecutiveStores look at other stores on same chain 2015-08-28 17:31:28 +00:00
Thumb DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
Thumb2 ARMLoadStoreOptimizer: Create LDRD/STRD on thumb2 2015-07-21 00:18:59 +00:00
WebAssembly WebAssembly: handle private/internal globals. 2015-08-26 22:09:54 +00:00
WinEH [WinEH] Update coloring to handle nested cases cleanly 2015-08-28 01:12:35 +00:00
X86 Test case for r246304. 2015-08-28 17:19:54 +00:00
XCore DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00