[LoopUtils,LV] Propagate fast-math flags on generated FCmp instructions
[oota-llvm.git] / lib / Transforms / Vectorize / LoopVectorize.cpp
index 19dcccc6eec4de1dc91934f1aa39a8d60d5b1a9d..41cfd52c51bd8aee66104540e4f1cb86bf10406c 100644 (file)
@@ -3654,10 +3654,12 @@ void InnerLoopVectorizer::vectorizeBlockInLoop(BasicBlock *BB, PhiVector *PV) {
       VectorParts &B = getVectorValue(it->getOperand(1));
       for (unsigned Part = 0; Part < UF; ++Part) {
         Value *C = nullptr;
-        if (FCmp)
+        if (FCmp) {
           C = Builder.CreateFCmp(Cmp->getPredicate(), A[Part], B[Part]);
-        else
+          cast<FCmpInst>(C)->copyFastMathFlags(it);
+        } else {
           C = Builder.CreateICmp(Cmp->getPredicate(), A[Part], B[Part]);
+        }
         Entry[Part] = C;
       }