diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index 7fbcb23a349..c18972c5201 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -194,10 +194,13 @@ static bool allSameBlock(ArrayRef<Value *> VL) {    return true;  } -/// \returns True if all of the values in \p VL are constants. +/// \returns True if all of the values in \p VL are constants (but not +/// globals/constant expressions).  static bool allConstant(ArrayRef<Value *> VL) { +  // Constant expressions and globals can't be vectorized like normal integer/FP +  // constants.    for (Value *i : VL) -    if (!isa<Constant>(i)) +    if (!isa<Constant>(i) || isa<ConstantExpr>(i) || isa<GlobalValue>(i))        return false;    return true;  }  | 

