llvm-project/llvm/test/CodeGen
James Molloy 11a1936b70 [SimplifyCFG] Rewrite SinkThenElseCodeToEnd
The new version has several advantages:
  1) IMSHO it's more readable and neater
  2) It handles loads and stores properly
  3) It can handle any number of incoming blocks rather than just two. I'll be taking advantage of this in a followup patch.

With this change we can now finally sink load-modify-store idioms such as:

    if (a)
      return *b += 3;
    else
      return *b += 4;

    =>

    %z = load i32, i32* %y
    %.sink = select i1 %a, i32 5, i32 7
    %b = add i32 %z, %.sink
    store i32 %b, i32* %y
    ret i32 %b

When this works for switches it'll be even more powerful.

llvm-svn: 279229
2016-08-19 10:10:27 +00:00
..
AArch64 [CodeGen] Fix a trivial type conversion bug dating back to pre-2008 2016-08-19 08:38:50 +00:00
AMDGPU Revert "RegScavenging: Add scavengeRegisterBackwards()" 2016-08-19 03:03:24 +00:00
ARM [SimplifyCFG] Rewrite SinkThenElseCodeToEnd 2016-08-19 10:10:27 +00:00
BPF [BPF] Remove exit-on-error from tests (PR27768, PR27769) 2016-05-30 08:28:34 +00:00
Generic Fix build breaks after r277028 2016-07-28 20:25:21 +00:00
Hexagon [Hexagon] Create vcombine in HexagonCopyToCombine 2016-08-18 14:12:34 +00:00
Inputs
Lanai Add a REQUIRES: assert on a Lanai test that uses a -debug-only flag 2016-07-29 19:35:22 +00:00
MIR [GlobalISel] Add Selected MachineFunction property. 2016-08-02 16:49:19 +00:00
MSP430
Mips Revert "RegScavenging: Add scavengeRegisterBackwards()" 2016-08-19 03:03:24 +00:00
NVPTX [NVPTX] Use untyped (.b) integer registers in PTX. 2016-08-12 22:02:19 +00:00
PowerPC Revert "RegScavenging: Add scavengeRegisterBackwards()" 2016-08-19 03:03:24 +00:00
SPARC Revert "[Sparc] Leon errata fix passes." 2016-08-12 14:48:09 +00:00
SystemZ [SystemZ] Use valid base/index regs for inline asm 2016-08-18 21:44:15 +00:00
Thumb Revert "RegScavenging: Add scavengeRegisterBackwards()" 2016-08-19 03:03:24 +00:00
Thumb2 CodeGen: If Convert blocks that would form a diamond when tail-merged. 2016-08-18 22:09:27 +00:00
WebAssembly [WebAssembly] Disable the store-results optimization. 2016-08-18 17:51:27 +00:00
WinEH Revert EH-specific checks in BranchFolding that were causing blow ups in compile time. 2016-07-27 17:55:33 +00:00
X86 [XRay] Synthesize a reference to the xray_instr_map 2016-08-19 04:44:30 +00:00
XCore IR: Introduce Module::global_objects(). 2016-06-22 20:29:42 +00:00