llvm-project/llvm/test
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
..
Analysis SCEV: Don't assert about non-SCEV-able value in isSCEVExprNeverPoison() (PR28932) 2016-08-17 22:50:18 +00:00
Assembler Support the DW_AT_noreturn DWARF flag. 2016-08-17 16:02:43 +00:00
Bindings Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
Bitcode [PM] Port NameAnonFunction pass to new pass manager 2016-08-12 14:03:36 +00:00
BugPoint
CodeGen [SimplifyCFG] Rewrite SinkThenElseCodeToEnd 2016-08-19 10:10:27 +00:00
DebugInfo [SimplifyCFG] Rewrite SinkThenElseCodeToEnd 2016-08-19 10:10:27 +00:00
Examples
ExecutionEngine [RuntimeDyld][MCJIT] Un-XFAIL some tests that were fixed by r279182. 2016-08-19 03:12:16 +00:00
Feature Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
FileCheck
Instrumentation [asan] Fix size of shadow incorrectly calculated in r279178 2016-08-19 08:33:53 +00:00
Integer
JitListener
LTO [LTO] Change addSaveTemps API: do not add dot to the supplied prefix path 2016-08-18 00:12:33 +00:00
LibDriver
Linker IR: Drop uniquing when an MDNode Value operand is deleted 2016-08-03 18:19:43 +00:00
MC [mips] Add l.[sd] and s.[sd] instruction aliases 2016-08-17 14:45:09 +00:00
Object [AMDGPU] llvm-objdump: Skip amd_kernel_code_t only at the begining of kernel symbol. 2016-08-17 10:17:57 +00:00
ObjectYAML [macho2yaml] Don't write empty linkedit data 2016-08-17 21:46:04 +00:00
Other [PM] Change the name of the repeating utility to something less 2016-08-04 03:52:53 +00:00
SymbolRewriter [PM] Port SymbolRewriter to the new PM 2016-07-25 20:52:00 +00:00
TableGen tests: accept different TargetOpcode values. 2016-07-07 17:51:42 +00:00
ThinLTO/X86 [LTO] Promote before performing weak resolution 2016-08-18 00:59:24 +00:00
Transforms [SimplifyCFG] Rewrite SinkThenElseCodeToEnd 2016-08-19 10:10:27 +00:00
Unit
Verifier [coroutines] Part 4[ab]: Coroutine Devirtualization: Lower coro.resume and coro.destroy. 2016-08-04 20:30:07 +00:00
YAMLParser
tools Fix tests in llvm/test/tools/gold/X86 to satisfy r279014. 2016-08-19 06:44:44 +00:00
.clang-format
CMakeLists.txt Restore "Resolution-based LTO API." 2016-08-11 14:58:12 +00:00
TestRunner.sh
lit.cfg Restore "Resolution-based LTO API." 2016-08-11 14:58:12 +00:00
lit.site.cfg.in