llvm-project/llvm/test
Chandler Carruth f425292721 [PM] Fix a bug in the new loop PM when handling functions with no loops.
Without any loops, we don't even bother to build the standard analyses
used by loop passes. Without these, we can't run loop analyses or
invalidate them properly. Unfortunately, we did these things in the
wrong order which would allow a loop analysis manager's proxy to be
built but then not have the standard analyses built. When we went to do
the invalidation in the proxy thing would fall apart. In the test case
provided, it would actually crash.

The fix is to carefully check for loops first, and to in fact build the
standard analyses before building the proxy. This allows it to
correctly trigger invalidation for those standard analyses.

An alternative might seem to be  to look at whether there are any loops
when doing invalidation, but this doesn't work when during the loop
pipeline run we delete the last loop. I've even included that as a test
case. It is both simpler and more robust to defer building the proxy
until there are definitely the standard set of analyses and indeed
loops.

This bug was uncovered by enabling GlobalsAA in the pipeline.

llvm-svn: 294728
2017-02-10 08:26:58 +00:00
..
Analysis [X86] Add costs for non-AVX512 single-source permutation integer shuffles 2017-02-02 20:27:13 +00:00
Assembler Move inline asm diags tests to an ARM directory. 2017-02-08 16:48:35 +00:00
Bindings [cmake] Canonicalize CMake booleans to 0/1 for lit interop 2017-01-06 21:33:48 +00:00
Bitcode Fix bitcode upgrade for DIGlobalVariables with a var: field. 2017-02-08 17:44:43 +00:00
BugPoint
CodeGen [X86][GlobalISel] Add general-purpose Register Bank 2017-02-10 07:05:56 +00:00
DebugInfo Reapply r294356 ("Keep track of spilled variables in LiveDebugValues"). 2017-02-08 23:46:59 +00:00
Examples
ExecutionEngine RuntimeDyldELF/AArch64: Implement basic GOT support 2017-02-06 15:31:28 +00:00
Feature Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00
FileCheck Commit a test for match-full-lines. 2017-01-09 23:11:25 +00:00
Instrumentation [sancov] using comdat only when it is enabled 2017-02-08 23:12:46 +00:00
Integer
JitListener [cmake] Canonicalize CMake booleans to 0/1 for lit interop 2017-01-06 21:33:48 +00:00
LTO Temporarily revert "For X86-64 linux and PPC64 linux align int128 to 16 bytes." 2017-02-10 04:35:32 +00:00
LibDriver
Linker Linker: Move special casing for available_externally in IRMover to clients. NFCI. 2017-02-02 05:12:15 +00:00
MC Make it possible to set SHF_LINK_ORDER explicitly. 2017-02-09 14:59:20 +00:00
Object test: adjust the test for the BSD format 2017-02-09 20:06:30 +00:00
ObjectYAML Attempt to fix the testcase in r292824 2017-01-23 20:42:17 +00:00
Other [PM] Fix a bug in the new loop PM when handling functions with no loops. 2017-02-10 08:26:58 +00:00
SymbolRewriter
TableGen [GlobalISel] Print the matched patterns using an action. 2017-02-04 00:47:08 +00:00
ThinLTO/X86 Temporarily revert "For X86-64 linux and PPC64 linux align int128 to 16 bytes." 2017-02-10 04:35:32 +00:00
Transforms [LoopUnswitch] Remove BFI usage (dead code) 2017-02-10 06:12:06 +00:00
Unit
Verifier Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00
YAMLParser
tools Temporarily revert "For X86-64 linux and PPC64 linux align int128 to 16 bytes." 2017-02-10 04:35:32 +00:00
.clang-format
CMakeLists.txt [llvm-config] Print --system-libs only when static linking 2017-01-06 21:33:54 +00:00
TestRunner.sh
lit.cfg [llvm-config] Print --system-libs only when static linking 2017-01-06 21:33:54 +00:00
lit.site.cfg.in [llvm-config] Print --system-libs only when static linking 2017-01-06 21:33:54 +00:00