1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test
Sanjoy Das 9b70f16033 Reimplement depedency tracking in the ImplicitNullChecks pass
Summary:
This change rewrites a core component in the ImplicitNullChecks pass for
greater simplicity since the original design was over-complicated for no
good reason.  Please review this as essentially a new pass.  The change
is almost NFC and I've added a test case for a scenario that this new
code handles that wasn't handled earlier.

The implicit null check pass, at its core, is a code hoisting transform.
It differs from "normal" code transforms in that it speculates
potentially faulting instructions (by design), but a lot of the usual
hazard detection logic (register read-after-write etc.) still applies.
We previously detected hazards by keeping track of registers defined and
used by machine instructions over an instruction range, but that was
unwieldy and did not actually confer any performance benefits.  The
intent was to have linear time complexity over the number of machine
instructions considered, but it ended up being N^2 is practice.

This new version is more obviously O(N^2) (with N capped to 8 by
default) in hazard detection.  It does not attempt to be clever in
tracking register uses or defs (the previous cleverness here was a
source of bugs).

Once this is checked in, I'll extract out the `IsSuitableMemoryOp` and
`CanHoistLoadInst` lambda into member functions (they're too complicated
to be inline lambdas) and do some other related NFC cleanups.

Reviewers: reames, anna, atrick

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 290394
2016-12-23 00:41:21 +00:00
..
Analysis [X86][SSE] Improve lowering of vXi64 multiplies 2016-12-21 20:00:10 +00:00
Assembler [LLParser] Make the line field of DIMacro(File) optional. 2016-12-22 00:29:00 +00:00
Bindings
Bitcode IR: Function summary representation for type tests. 2016-12-21 23:03:45 +00:00
BugPoint
CodeGen Reimplement depedency tracking in the ImplicitNullChecks pass 2016-12-23 00:41:21 +00:00
DebugInfo Fix an assertion in DwarfExpression when emitting fragments in vector registers 2016-12-22 06:10:41 +00:00
Examples
ExecutionEngine Fix R_AARCH64_MOVW_UABS_G3 relocation 2016-12-15 22:36:53 +00:00
Feature
FileCheck [FileCheck] Fix --strict-whitespace --match-full-lines -- add test-case 2016-12-18 21:04:47 +00:00
Instrumentation Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
Integer
JitListener
LibDriver LibDriver: Allow resource files to be archive members. 2016-12-15 19:37:46 +00:00
Linker Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
LTO Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
MC AMDGPU: Fix missing 16-bit cmpx instructions 2016-12-22 16:27:14 +00:00
Object
ObjectYAML [ObjectYAML] Support for DWARF debug_info section 2016-12-22 22:44:27 +00:00
Other [PM] Loosen the check ever so slightly -- MSVC appears to not include 2016-12-22 07:53:20 +00:00
SymbolRewriter
TableGen
ThinLTO/X86 Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
tools [sancov] hash prefix results in huge merge files, use shorter prefix 2016-12-21 22:09:57 +00:00
Transforms [cfi] Emit jump tables as a function-level inline asm. 2016-12-22 22:22:35 +00:00
Unit
Verifier [IR] Remove the DIExpression field from DIGlobalVariable. 2016-12-20 02:09:43 +00:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg
lit.site.cfg.in
TestRunner.sh