1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 05:23:45 +02:00
llvm-mirror/include/llvm
James Molloy d523d136d2 [InlineCost] Reduce inline thresholds to compensate for cost changes
In r286814, the algorithm for calculating inline costs changed. This
caused more inlining to take place which is especially apparent
in optsize and minsize modes.

As the cost calculation removed a skewed behaviour (we were inconsistent
about the cost of calls) it isn't possible to update the thresholds to
get exactly the same behaviour as before. However, this threshold change
accounts for the very common case where an inline candidate has no
calls within it. In this case, r286814 would inline around 5-6 more (IR)
instructions.

The changes to -Oz have been heavily benchmarked. The "obvious" value
for the inline threshold at -Oz is zero, but due to inaccuracies in the
inline heuristics this can actually cause code size increases due to
not inlining key thunk functions (that then disappear). Experimentally,
5 was the sweet spot for code size over the test-suite.

For -Os, this change removes the outlier results shown up by green dragon
(http://104.154.54.203/db_default/v4/nts/13248).

Fixes D26848.

llvm-svn: 288024
2016-11-28 11:07:37 +00:00
..
ADT Revert "[Triple] Add Facebook vendor" 2016-11-23 19:03:54 +00:00
Analysis [InlineCost] Reduce inline thresholds to compensate for cost changes 2016-11-28 11:07:37 +00:00
AsmParser
Bitcode Bitcode: Introduce initial multi-module reader API. 2016-11-16 21:44:45 +00:00
CodeGen Rely on a single DWARF version instead of having two copies 2016-11-23 23:30:37 +00:00
Config Revert "Add link-time detection of LLVM_ABI_BREAKING_CHECKS mismatch" 2016-11-18 20:02:34 +00:00
DebugInfo [DebugInfo] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 23:16:32 +00:00
Demangle
ExecutionEngine [Orc] Clang-format the recent RPC update (r286620 and related). 2016-11-17 02:33:47 +00:00
IR [PM] Remove weird marking of invalidated analyses as "preserved". 2016-11-28 10:42:21 +00:00
IRReader
LibDriver
LineEditor
Linker [ThinLTO] Don't link module level assembly when importing 2016-10-12 18:39:29 +00:00
LTO LTO: Remove a now-unused InputFile accessor. 2016-11-22 21:25:30 +00:00
MC Fix comment typos. NFC. 2016-11-20 13:47:59 +00:00
Object Object: Add IRObjectFile::getTargetTriple(). 2016-11-24 01:13:09 +00:00
ObjectYAML
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes
ProfileData Fix comment typos. NFC. 2016-11-20 13:47:59 +00:00
Support [ThreadPool] Rollback recent changes until I figure out the breakage. 2016-11-28 09:17:12 +00:00
TableGen TableGen: Add operator !or 2016-11-15 06:49:28 +00:00
Target TRI: Add hook to pass scavenger during frame elimination 2016-11-24 00:26:47 +00:00
Transforms [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
CMakeLists.txt
InitializePasses.h Introduce GlobalSplit pass. 2016-11-16 23:40:26 +00:00
LinkAllIR.h Remove unused #includes of TimeValue.h. NFC. 2016-10-24 14:00:26 +00:00
LinkAllPasses.h Add Loop Sink pass to reverse the LICM based of basic block frequency. 2016-10-27 16:30:08 +00:00
module.modulemap [ORC] Work around an apparent modules/linkage issue. 2016-11-15 02:14:57 +00:00
module.modulemap.build
Pass.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
PassAnalysisSupport.h
PassInfo.h [llvm] Remove duplicate header from PassInfo.h 2016-11-11 02:01:32 +00:00
PassRegistry.h
PassSupport.h Use StringRef in Pass Info/Support API (NFC) 2016-10-01 04:03:30 +00:00