diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-08-28 15:40:34 +0000 | 
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-08-28 15:40:34 +0000 | 
| commit | f79d8a064ce4d8846377e4abbc9a389b62f90d43 (patch) | |
| tree | bfe6f428710e7825d3b804fe31fae7ac2f3a1ff1 /llvm/lib/Transforms | |
| parent | b569624049311a6975495a82abc9fa78d4548c44 (diff) | |
| download | bcm5719-llvm-f79d8a064ce4d8846377e4abbc9a389b62f90d43.tar.gz bcm5719-llvm-f79d8a064ce4d8846377e4abbc9a389b62f90d43.zip | |
[InstCombine] Disable recursion in foldGEPICmp for vector pointer GEPs
Due to missing vector support in this function, recursion can
generate worse code in some cases.
llvm-svn: 370221
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp index dad38e38cab..3a01d9cb4f4 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -988,12 +988,14 @@ Instruction *InstCombiner::foldGEPICmp(GEPOperator *GEPLHS, Value *RHS,      }      // If one of the GEPs has all zero indices, recurse. -    if (GEPLHS->hasAllZeroIndices()) +    // FIXME: Handle vector of pointers. +    if (!GEPLHS->getType()->isVectorTy() && GEPLHS->hasAllZeroIndices())        return foldGEPICmp(GEPRHS, GEPLHS->getOperand(0),                           ICmpInst::getSwappedPredicate(Cond), I);      // If the other GEP has all zero indices, recurse. -    if (GEPRHS->hasAllZeroIndices()) +    // FIXME: Handle vector of pointers. +    if (!GEPRHS->getType()->isVectorTy() && GEPRHS->hasAllZeroIndices())        return foldGEPICmp(GEPLHS, GEPRHS->getOperand(0), Cond, I);      bool GEPsInBounds = GEPLHS->isInBounds() && GEPRHS->isInBounds(); | 

