summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorNadav Rotem <nrotem@apple.com>2013-01-02 23:54:43 +0000
committerNadav Rotem <nrotem@apple.com>2013-01-02 23:54:43 +0000
commit4897392360903a03ad8de32408dc2f844919f32b (patch)
tree9be9be13f90d822729d1cabdb6dc84c4fcad5882 /llvm/lib
parentda4b2195fc72e8d2d5751b3d64d68a818426aa86 (diff)
downloadbcm5719-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.cpp14
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);
OpenPOWER on IntegriCloud