llvm-project/llvm/test
Philip Reames ac115ed72f [CGP] Duplicate addressing computation in cold paths if required to sink addressing mode
This patch teaches CGP to duplicate addressing mode computations into cold paths (detected via explicit cold attribute on calls) if required to let addressing mode be safely sunk into the basic block containing each load and store.

In general, duplicating code into cold blocks may result in code growth, but should not effect performance. In this case, it's better to duplicate some code than to put extra pressure on the register allocator by making it keep the address through the entirely of the fast path.

This patch only handles addressing computations, but in principal, we could implement a more general cold cold scheduling heuristic which tries to reduce register pressure in the fast path by duplicating code into the cold path. Getting the profitability of the general case right seemed likely to be challenging, so I stuck to the existing case (addressing computation) we already had.

Differential Revision: http://reviews.llvm.org/D17652

llvm-svn: 263074
2016-03-09 23:13:12 +00:00
..
Analysis InstCombine: Restrict computeKnownBits() on all Values to OptLevel > 2 2016-03-09 18:47:11 +00:00
Assembler Fix constant folding of constant vector GEPs with undef or null as pointer argument. 2016-01-19 16:34:31 +00:00
Bindings Add support for invoke/landingpad/resume in C API test 2016-02-18 20:38:32 +00:00
Bitcode [AVR] Add calling convention parser tokens 2016-03-03 10:08:02 +00:00
BugPoint
CodeGen [x86, AVX] optimize masked loads with constant masks 2016-03-09 22:12:08 +00:00
DebugInfo Don't crash when compiling inline assembler containing .file directives. 2016-03-09 17:32:56 +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 [GMR/OperandBundles] Teach getModRefBehavior about operand bundles 2016-02-09 02:31:47 +00:00
FileCheck Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. 2016-02-29 22:13:03 +00:00
Instrumentation [tsan] Add support for pointer typed atomic stores, loads, and cmpxchg 2016-03-07 23:16:23 +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 [ThinLTO] Remove imported available externally defs from comdats. 2016-02-08 18:47:20 +00:00
MC This change adds co-processor condition branching and conditional traps to the Sparc back-end. 2016-03-09 18:20:21 +00:00
Object [AMDGPU] add AMDGPU target support to ELFObjectFile.h header 2016-03-09 17:08:19 +00:00
Other [PM] Wire up optimization levels and default pipeline construction APIs 2016-02-28 22:16:03 +00:00
SymbolRewriter
TableGen SelectionDAG: Make Properties a field of SDPatternOperator 2016-02-10 18:40:04 +00:00
ThinLTO/X86 Fix ThinLTO test: depends on the X86 backend 2016-03-09 04:04:40 +00:00
Transforms [CGP] Duplicate addressing computation in cold paths if required to sink addressing mode 2016-03-09 23:13:12 +00:00
Unit
Verifier [Verifier] Don't abort on invalid cleanuprets 2016-03-01 18:59:50 +00:00
YAMLParser
tools [llvm-readobj] Enable GNU style section group print 2016-03-09 19:16:13 +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