llvm-project/llvm/test
James Molloy eb46641c28 [GlobalsAA] Teach GlobalsAA about nocapture
Arguments to function calls marked "nocapture" can be marked as
non-escaping. However, nocapture is defined in terms of the lifetime
of the callee, and if the callee can directly or indirectly recurse to
the caller, the semantics of nocapture are invalid.

Therefore, we eagerly discover which SCC each function belongs to,
and later can check if callee and caller of a callsite belong to
the same SCC, in which case there could be recursion.

This means that we can't be so optimistic in
getModRefInfo(ImmutableCallsite) - previously we assumed all call
arguments never aliased with an escaping global. Now we need to check,
because a global could now be passed as an argument but still not
escape.

This also solves a related conformance problem: MemCpyOptimizer can
turn non-escaping stores of globals into calls to intrinsics like
llvm.memcpy/llvm/memset. This confuses GlobalsAA, which knows the
global can't escape and so returns NoModRef when queried, when
obviously a memcpy/memset call does indeed reference and modify its
arguments.

This fixes PR24800, PR24801, and PR24802.

llvm-svn: 248576
2015-09-25 15:39:29 +00:00
..
Analysis [GlobalsAA] Teach GlobalsAA about nocapture 2015-09-25 15:39:29 +00:00
Assembler [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
Bindings Add a way to skip the Go bindings tests even when Go is configured in 2015-09-10 05:47:43 +00:00
Bitcode [Bitcode][Asm] Teach LLVM to read and write operand bundles. 2015-09-24 23:34:52 +00:00
BugPoint Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
CodeGen ARM: address WoA division limitation 2015-09-25 05:15:46 +00:00
DebugInfo Add REQUIRES: default_triple to these testcases. 2015-09-24 00:35:14 +00:00
Examples Disable llvm/test/Examples/ for now while investigating. 2015-08-28 03:32:43 +00:00
ExecutionEngine [RuntimeDyld] Support non-zero addends for the MachO X86_64 SUBTRACTOR reloc. 2015-09-10 21:05:58 +00:00
Feature Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
FileCheck
Instrumentation Put profile variables of COMDAT functions to it's own COMDAT group. 2015-09-23 22:40:45 +00:00
Integer
JitListener DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
LTO Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
LibDriver Add support for producing thin archives in llvm-lib. 2015-07-17 16:01:11 +00:00
Linker Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
MC Restore test coverage for other than ELFOSABI_NONE 2015-09-24 23:01:16 +00:00
Object Avoid SEGFAULT if a requested symbol section is absent. 2015-09-21 19:17:18 +00:00
Other Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
SymbolRewriter [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
TableGen [TableGen] Allow TokenTy in intrinsic signatures 2015-09-02 13:36:25 +00:00
Transforms [InstCombine] Recognize another bswap idiom. 2015-09-24 10:24:58 +00:00
Unit
Verifier [Bitcode][Asm] Teach LLVM to read and write operand bundles. 2015-09-24 23:34:52 +00:00
YAMLParser
tools dsymutil: Fix the condition to distinguish module imports form definitions. 2015-09-24 16:10:14 +00:00
.clang-format
CMakeLists.txt [CMake] Update LLVM_TEST_DEPENDS not to use macho-dump. It has been unused since r247235. 2015-09-19 07:19:30 +00:00
Makefile Add a way to skip the Go bindings tests even when Go is configured in 2015-09-10 05:47:43 +00:00
Makefile.tests
TestRunner.sh
lit.cfg Remove macho-dump. Its functionality is now covered by llvm-readobj. 2015-09-22 17:46:10 +00:00
lit.site.cfg.in Add a way to skip the Go bindings tests even when Go is configured in 2015-09-10 05:47:43 +00:00