llvm-project/llvm/test
Alina Sbirlea 109d2ea153 [MemorySSA] Cleanup trivial phis.
Summary:
This is unfortunately needed for correctness, if we are to extend the tolerance of the update API to the way simple loop unswitch is doing cloning.

In simple loop unswitch (as opposed to loop unswitch), not all blocks are cloned. This can create unreachable cloned blocks (no predecessor), which are later cleaned up.

In MemorySSA, the  APIs for supporting these kind of updates (clone + update exit blocks), make certain assumption on the integrity of the CFG. When cloning, if something was not cloned, it's values in MemorySSA default to LiveOnEntry. When updating exit blocks, it is safe to assume that we can first insert phis in the blocks merging two clones, then add additional phis in the IDF of the blocks that received phis. This no longer holds true if one of the clones being merged comes from an unreachable block. We'd conservatively need to add all phis before filling in their incoming definitions. In practice this restriction can be relaxed if we clean up trivial phis after the first round of insertion.

Reviewers: george.burgess.iv

Subscribers: jlebar, Prazek, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D63354

llvm-svn: 363880
2019-06-19 21:33:09 +00:00
..
Analysis [MemorySSA] Cleanup trivial phis. 2019-06-19 21:33:09 +00:00
Assembler hwasan: Add a tag_offset DWARF attribute to instrumented stack variables. 2019-06-17 23:39:41 +00:00
Bindings
Bitcode [SVE][IR] Scalable Vector IR Type with pr42210 fix 2019-06-18 10:11:56 +00:00
BugPoint
CodeGen AMDGPU: Fix folding immediate into readfirstlane through reg_sequence 2019-06-19 20:44:15 +00:00
DebugInfo [llvm-dwarfdump] --gdb-index: fix uninitialized TuListOffset 2019-06-19 13:51:29 +00:00
Demangle llvm-undname: Correctly demangle vararg parameters 2019-06-04 19:10:08 +00:00
Examples
ExecutionEngine [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
Feature
FileCheck FileCheck [6/12]: Introduce numeric variable definition 2019-06-06 13:21:06 +00:00
Instrumentation [DFSan] Add UnaryOperator visitor to DataFlowSanitizer 2019-06-19 15:11:41 +00:00
Integer
JitListener [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
LTO [ThinLTO]LTO]Legacy] Fix dependent libraries support by adding querying of the IRSymtab 2019-06-12 11:07:56 +00:00
Linker Reapply: IR: add optional type to 'byval' function parameters 2019-05-30 18:48:23 +00:00
MC [ARM] Add MVE vector bit-operations (register inputs). 2019-06-19 16:43:53 +00:00
MachineVerifier Fix GlobalISel MachineVerifier tests. NFC. 2019-06-19 18:15:45 +00:00
Object [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
ObjectYAML [yaml2obj][MachO] Don't fill dummy data for virtual sections 2019-06-17 02:07:20 +00:00
Other [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
SafepointIRVerifier
Support
SymbolRewriter
TableGen
ThinLTO/X86 [Remarks] Extend -fsave-optimization-record to specify the format 2019-06-17 16:06:00 +00:00
Transforms [InstCombine] Fold icmp eq/ne (and %x, signbit), 0 -> %x s>=/s< 0 earlier 2019-06-19 17:31:39 +00:00
Unit
Verifier Add debug location verification for !llvm.loop attachments. 2019-06-18 20:09:09 +00:00
YAMLParser
tools [llvm-readobj] Match GNU output for DT_RPATH and DT_RUNPATH when dumping dynamic symbol table. 2019-06-19 19:31:07 +00:00
.clang-format
CMakeLists.txt [tools] Introduce llvm-lipo 2019-05-28 23:22:12 +00:00
TestRunner.sh
lit.cfg.py
lit.site.cfg.py.in