diff options
author | Vitaly Buka <vitalybuka@google.com> | 2019-07-10 22:53:52 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2019-07-10 22:53:52 +0000 |
commit | d03bd1db59496079dfecf9e3d2bd79b6b6c7659b (patch) | |
tree | b1cf7f5ccfe694ab353e9179faace626a51f4460 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | e72676657f3e2f3e29125efc8c12bcb477cda445 (diff) | |
download | bcm5719-llvm-d03bd1db59496079dfecf9e3d2bd79b6b6c7659b.tar.gz bcm5719-llvm-d03bd1db59496079dfecf9e3d2bd79b6b6c7659b.zip |
NFC: Pass DataLayout into isBytewiseValue
Summary:
We will need to handle IntToPtr which I will submit in a separate patch as it's
not going to be NFC.
Reviewers: eugenis, pcc
Reviewed By: eugenis
Subscribers: hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D63940
llvm-svn: 365709
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 39827831b79..0b337ae50ef 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -3166,7 +3166,7 @@ bool llvm::isKnownNeverNaN(const Value *V, const TargetLibraryInfo *TLI, return true; } -Value *llvm::isBytewiseValue(Value *V) { +Value *llvm::isBytewiseValue(Value *V, const DataLayout &DL) { // All byte-wide stores are splatable, even of arbitrary variables. if (V->getType()->isIntegerTy(8)) @@ -3205,7 +3205,8 @@ Value *llvm::isBytewiseValue(Value *V) { else if (CFP->getType()->isDoubleTy()) Ty = Type::getInt64Ty(Ctx); // Don't handle long double formats, which have strange constraints. - return Ty ? isBytewiseValue(ConstantExpr::getBitCast(CFP, Ty)) : nullptr; + return Ty ? isBytewiseValue(ConstantExpr::getBitCast(CFP, Ty), DL) + : nullptr; } // We can handle constant integers that are multiple of 8 bits. @@ -3233,20 +3234,20 @@ Value *llvm::isBytewiseValue(Value *V) { if (ConstantDataSequential *CA = dyn_cast<ConstantDataSequential>(C)) { Value *Val = UndefInt8; for (unsigned I = 0, E = CA->getNumElements(); I != E; ++I) - if (!(Val = Merge(Val, isBytewiseValue(CA->getElementAsConstant(I))))) + if (!(Val = Merge(Val, isBytewiseValue(CA->getElementAsConstant(I), DL)))) return nullptr; return Val; } if (isa<ConstantVector>(C)) { Constant *Splat = cast<ConstantVector>(C)->getSplatValue(); - return Splat ? isBytewiseValue(Splat) : nullptr; + return Splat ? isBytewiseValue(Splat, DL) : nullptr; } if (isa<ConstantArray>(C) || isa<ConstantStruct>(C)) { Value *Val = UndefInt8; for (unsigned I = 0, E = C->getNumOperands(); I != E; ++I) - if (!(Val = Merge(Val, isBytewiseValue(C->getOperand(I))))) + if (!(Val = Merge(Val, isBytewiseValue(C->getOperand(I), DL)))) return nullptr; return Val; } |