mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
LoopVectorizer: Use the "optsize" attribute to decide if we are allowed to increase the function size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170004 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -53,10 +53,8 @@ namespace {
|
||||
struct LoopVectorize : public LoopPass {
|
||||
/// Pass identification, replacement for typeid
|
||||
static char ID;
|
||||
/// Optimize for size. Do not generate tail loops.
|
||||
bool OptForSize;
|
||||
|
||||
explicit LoopVectorize(bool OptSz = false) : LoopPass(ID), OptForSize(OptSz) {
|
||||
explicit LoopVectorize() : LoopPass(ID) {
|
||||
initializeLoopVectorizePass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
@ -93,8 +91,15 @@ struct LoopVectorize : public LoopPass {
|
||||
VTTI = TTI->getVectorTargetTransformInfo();
|
||||
// Use the cost model.
|
||||
LoopVectorizationCostModel CM(L, SE, &LVL, VTTI);
|
||||
|
||||
// Check the function attribues to find out if this function should be
|
||||
// optimized for size.
|
||||
Function *F = L->getHeader()->getParent();
|
||||
bool OptForSize =
|
||||
F->getFnAttributes().hasAttribute(Attributes::OptimizeForSize);
|
||||
|
||||
unsigned VF = CM.selectVectorizationFactor(OptForSize,
|
||||
VectorizationFactor);
|
||||
VectorizationFactor);
|
||||
|
||||
if (VF == 1) {
|
||||
DEBUG(dbgs() << "LV: Vectorization is possible but not beneficial.\n");
|
||||
@ -2159,8 +2164,8 @@ INITIALIZE_PASS_DEPENDENCY(LoopSimplify)
|
||||
INITIALIZE_PASS_END(LoopVectorize, LV_NAME, lv_name, false, false)
|
||||
|
||||
namespace llvm {
|
||||
Pass *createLoopVectorizePass(bool OptForSize = false) {
|
||||
return new LoopVectorize(OptForSize);
|
||||
Pass *createLoopVectorizePass() {
|
||||
return new LoopVectorize();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user