diff options
author | Andrew Trick <atrick@apple.com> | 2011-10-01 01:39:05 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2011-10-01 01:39:05 +0000 |
commit | b2ab2fa524f3f90376639037bd81924483cca0af (patch) | |
tree | e09aa034342e5ed6e61cd2b7bb363b5808c9fc1b /include/llvm/Analysis/CodeMetrics.h | |
parent | 5c655413cf9466c29e38204ab3f19b33fffd7996 (diff) |
Inlining and unrolling heuristics should be aware of free truncs.
We want heuristics to be based on accurate data, but more importantly
we don't want llvm to behave randomly. A benign trunc inserted by an
upstream pass should not cause a wild swings in optimization
level. See PR11034. It's a general problem with threshold-based
heuristics, but we can make it less bad.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140919 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/CodeMetrics.h')
-rw-r--r-- | include/llvm/Analysis/CodeMetrics.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/llvm/Analysis/CodeMetrics.h b/include/llvm/Analysis/CodeMetrics.h index 9433d07a2b..d96dd82b35 100644 --- a/include/llvm/Analysis/CodeMetrics.h +++ b/include/llvm/Analysis/CodeMetrics.h @@ -18,6 +18,9 @@ #include "llvm/ADT/DenseMap.h" namespace llvm { + + class TargetData; + // CodeMetrics - Calculate size and a few similar metrics for a set of // basic blocks. struct CodeMetrics { @@ -68,11 +71,11 @@ namespace llvm { /// analyzeBasicBlock - Add information about the specified basic block /// to the current structure. - void analyzeBasicBlock(const BasicBlock *BB); + void analyzeBasicBlock(const BasicBlock *BB, const TargetData *TD = 0); /// analyzeFunction - Add information about the specified function /// to the current structure. - void analyzeFunction(Function *F); + void analyzeFunction(Function *F, const TargetData *TD = 0); /// CountCodeReductionForConstant - Figure out an approximation for how /// many instructions will be constant folded if the specified value is |