llvm-project/llvm/lib
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 [ValueTracking] Extract isKnownPositive [NFCI] 2016-03-09 21:31:47 +00:00
AsmParser [AsmParser] Expose an API to parse a string starting with a type. 2016-03-08 00:37:07 +00:00
Bitcode Bitcode reader: Inline readAbbreviatedField in readRecord and move the enclosing loop in each case (NFC) 2016-03-07 00:38:09 +00:00
CodeGen [CGP] Duplicate addressing computation in cold paths if required to sink addressing mode 2016-03-09 23:13:12 +00:00
DebugInfo [DebugInfo] Dump CIE augmentation data as a list of hex bytes 2016-03-01 18:38:05 +00:00
ExecutionEngine ExecutionEngine: tweak debug log 2016-03-05 20:00:41 +00:00
Fuzzer [libfuzzer] adding std:string to allowed adaptable argument. 2016-03-04 23:18:01 +00:00
IR [IR] Provide an API to skip the details of a structured type when printed. 2016-03-07 22:32:42 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LTO libLTO: add a ThinLTOCodeGenerator on the model of LTOCodeGenerator. 2016-03-09 01:37:22 +00:00
LibDriver Remove autoconf support 2016-01-26 21:29:08 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker FunctionIndex is not optional for renameModuleForThinLTO(), make it a reference (NFC) 2016-03-09 01:37:14 +00:00
MC Don't crash when compiling inline assembler containing .file directives. 2016-03-09 17:32:56 +00:00
Object [lanai] Add ELF enum value and relocations. 2016-03-01 21:21:42 +00:00
ObjectYAML [AMDGPU] add AMDGPU target support to ELFObjectFile.h header 2016-03-09 17:08:19 +00:00
Option Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Passes [PM] Wire up optimization levels and default pipeline construction APIs 2016-02-28 22:16:03 +00:00
ProfileData Use LineLocation instead of CallsiteLocation to index callsite profile. 2016-03-03 18:09:32 +00:00
Support Revert r130657, "Windows/DynamicLibrary.inc: Clean up ELM_Callback. We may check the decl instead of the versions of individual libraries." 2016-03-07 00:13:09 +00:00
TableGen [TableGen] Fix typos in comments. NFC 2016-02-26 06:50:27 +00:00
Target [x86] fix cost model inaccuracy for vector memory ops 2016-03-09 22:23:33 +00:00
Transforms Fix the build 2016-03-09 23:07:53 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
LLVMBuild.txt Add LLVMBuild for ObjectYAML. 2016-03-01 21:29:33 +00:00