llvm-project/llvm/test
Hyojin Sung 0ada5b0d14 [SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops
When eliminating or merging almost empty basic blocks, the existence of non-trivial PHI nodes
is currently used to recognize potential loops of which the block is the header and keep the block.
However, the current algorithm fails if the loops' exit condition is evaluated only with volatile
values hence no PHI nodes in the header. Especially when such a loop is an outer loop of a nested
loop, the loop is collapsed into a single loop which prevent later optimizations from being 
applied (e.g., transforming nested loops into simplified forms and loop vectorization).

The patch augments the existing PHI node-based check by adding a pre-test if the BB actually 
belongs to a set of loop headers and not eliminating it if yes. 

llvm-svn: 264596
2016-03-28 17:22:25 +00:00
..
Analysis AMDGPU: Cost model for basic integer operations 2016-03-25 01:16:40 +00:00
Assembler IR: Stop upgrading !llvm.loop attachments via MDString 2016-03-25 00:56:13 +00:00
Bindings Expose IRBuilder::CreateAtomicCmpXchg as LLVMBuildAtomicCmpXchg in the C API. 2016-03-19 21:28:28 +00:00
Bitcode Reapply ~"Bitcode: Collect all MDString records into a single blob" 2016-03-27 23:17:54 +00:00
BugPoint
CodeGen Introduce MachineFunctionProperties and the AllVRegsAllocated property 2016-03-28 17:05:30 +00:00
DebugInfo Introduce MachineFunctionProperties and the AllVRegsAllocated property 2016-03-28 17:05:30 +00:00
Examples
ExecutionEngine Disable the new Orc lazy JIT tests on Windows, they do not pass 2016-02-10 18:46:42 +00:00
Feature [NVVM] Remove noduplicate attribute from synchronizing intrinsics. 2016-03-22 22:08:01 +00:00
FileCheck Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. 2016-02-29 22:13:03 +00:00
Instrumentation [msan] Don't put module constructors in comdats. 2016-03-15 20:25:47 +00:00
Integer
JitListener Fix several accidental DOS line endings in source files 2016-01-03 17:22:03 +00:00
LTO Rename embedded bitcode section in MachO 2016-02-29 19:40:10 +00:00
LibDriver
Linker Fix another case where we were unconditionally linking linkonce GVs. 2016-03-24 15:23:01 +00:00
MC Sparc: silently ignore .proc assembler directive 2016-03-28 14:00:11 +00:00
Object [lanai] Add Lanai backend. 2016-03-28 13:09:54 +00:00
Other [CG] Add a new pass manager printer pass for the old call graph and 2016-03-10 11:24:11 +00:00
SymbolRewriter
TableGen [GlobalISel][Target] Add an opcode for unconditional branch. 2016-03-11 17:27:38 +00:00
ThinLTO/X86 [ThinLTO] Renaming of function index to module summary index (NFC) 2016-03-15 00:04:37 +00:00
Transforms [SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops 2016-03-28 17:22:25 +00:00
Unit [lit] Hack lit to allow a test suite to request that it is run "early". 2016-03-12 03:03:31 +00:00
Verifier [Verifier] Reject PHIs using defs from own block. 2016-03-26 23:32:57 +00:00
YAMLParser
tools [llvm-size] Implement --common option 2016-03-28 16:48:10 +00:00
.clang-format
CMakeLists.txt [CMake] Add convenience target llvm-test-depends to build test dependencies. 2016-03-02 00:27:14 +00:00
TestRunner.sh
lit.cfg [lit] Teach lit about global-isel requirement. 2016-03-08 00:03:40 +00:00
lit.site.cfg.in Make WinCOFFObjectWriter.cpp's timestamp writing not use ENABLE_TIMESTAMPS 2016-01-06 19:05:19 +00:00