1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/lib
Kyle Butt 8590c55a7e Codegen: Tail-duplicate during placement.
The tail duplication pass uses an assumed layout when making duplication
decisions. This is fine, but passes up duplication opportunities that
may arise when blocks are outlined. Because we want the updated CFG to
affect subsequent placement decisions, this change must occur during
placement.

In order to achieve this goal, TailDuplicationPass is split into a
utility class, TailDuplicator, and the pass itself. The pass delegates
nearly everything to the TailDuplicator object, except for looping over
the blocks in a function. This allows the same code to be used for tail
duplication in both places.

This change, in concert with outlining optional branches, allows
triangle shaped code to perform much better, esepecially when the
taken/untaken branches are correlated, as it creates a second spine when
the tests are small enough.

Issue from previous rollback fixed, and a new test was added for that
case as well.

Differential revision: https://reviews.llvm.org/D18226

llvm-svn: 283274
2016-10-04 23:54:18 +00:00
..
Analysis Don't filter diagnostics written as YAML to the output file 2016-10-04 18:13:45 +00:00
AsmParser [AsmParser] Remove unused partial template specialization. 2016-09-22 22:02:59 +00:00
Bitcode Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
CodeGen Codegen: Tail-duplicate during placement. 2016-10-04 23:54:18 +00:00
DebugInfo Do not pass a superblock to PDBFileBuilder. 2016-09-30 20:52:12 +00:00
Demangle Avoid using alignas and constexpr. 2016-09-06 20:36:24 +00:00
ExecutionEngine Use StringRef instead of raw pointer in ExecutionEngine 2016-10-01 06:22:04 +00:00
Fuzzer [libFuzzer] remove dfsan support and some related stale code. This is not being used and as is is pretty weak anyway 2016-10-04 06:08:46 +00:00
IR [C API] Add LLVMConstExactUDiv and LLVMBuildExactUDiv functions. 2016-10-04 23:32:42 +00:00
IRReader
LibDriver Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
LineEditor
Linker DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
LTO Use StringRef in LTOCodegenerator (NFC) 2016-10-01 01:18:23 +00:00
MC Misc improvements to StringTableBuilder. 2016-10-04 22:43:25 +00:00
Object Next set of additional error checks for invalid Mach-O files for the 2016-10-04 20:37:43 +00:00
ObjectYAML [macho2yaml] Don't write empty linkedit data 2016-08-17 21:46:04 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes Fix test after renaming -name-anon-functions pass to -name-anon-globals 2016-09-16 17:18:16 +00:00
ProfileData NFC Add const 2016-09-30 21:05:55 +00:00
Support [cpu-detection] Copy simplified version of get_cpuid_max to remove dependency to clang's implementation 2016-10-04 22:39:53 +00:00
TableGen Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
Target [Target] move reciprocal estimate settings from TargetOptions to TargetLowering 2016-10-04 20:46:43 +00:00
Transforms [asan] LLVM: Switch to using dynamic shadow offset on iOS 2016-10-04 19:02:29 +00:00
CMakeLists.txt Try to fix a circular dependency in the modules build. 2016-09-06 20:16:19 +00:00
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00