diff options
author | Nadav Rotem <nrotem@apple.com> | 2013-01-02 23:54:43 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2013-01-02 23:54:43 +0000 |
commit | 4897392360903a03ad8de32408dc2f844919f32b (patch) | |
tree | 9be9be13f90d822729d1cabdb6dc84c4fcad5882 /llvm/lib | |
parent | da4b2195fc72e8d2d5751b3d64d68a818426aa86 (diff) | |
download | bcm5719-llvm-4897392360903a03ad8de32408dc2f844919f32b.tar.gz bcm5719-llvm-4897392360903a03ad8de32408dc2f844919f32b.zip |
Avoid vectorization when the function has the "noimplicitflot" attribute.
llvm-svn: 171429
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index f2004524b80..9b1d398cccb 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -94,9 +94,17 @@ struct LoopVectorize : public LoopPass { // Check the function attribues to find out if this function should be // optimized for size. Function *F = L->getHeader()->getParent(); - Attribute::AttrKind SzAttr= Attribute::OptimizeForSize; - bool OptForSize = - F->getAttributes().hasAttribute(AttributeSet::FunctionIndex, SzAttr); + Attribute::AttrKind SzAttr = Attribute::OptimizeForSize; + Attribute::AttrKind FlAttr = Attribute::NoImplicitFloat; + unsigned FnIndex = AttributeSet::FunctionIndex; + bool OptForSize = F->getAttributes().hasAttribute(FnIndex, SzAttr); + bool NoFloat = F->getAttributes().hasAttribute(FnIndex, FlAttr); + + if (NoFloat) { + DEBUG(dbgs() << "LV: Can't vectorize when the NoImplicitFloat" + "attribute is used.\n"); + return false; + } unsigned VF = CM.selectVectorizationFactor(OptForSize, VectorizationFactor); |