From: David Majnemer Date: Thu, 7 Nov 2013 22:29:42 +0000 (+0000) Subject: IR: Properly canonicalize PointerType in ConstantExpr GEPs X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=f9c692cfeb9a73bad531f86d9f103e67d3d0e162;p=oota-llvm.git IR: Properly canonicalize PointerType in ConstantExpr GEPs No additional test was needed, Other/constant-fold-gep.ll detects this just fine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194221 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/IR/ConstantFold.cpp b/lib/IR/ConstantFold.cpp index 46e391abb04..3219be11b68 100644 --- a/lib/IR/ConstantFold.cpp +++ b/lib/IR/ConstantFold.cpp @@ -1966,11 +1966,12 @@ static Constant *ConstantFoldGetElementPtrImpl(Constant *C, else if (VectorType *VTy = dyn_cast(LastTy)) NumElements = VTy->getNumElements(); - if (ConstantInt *CI = dyn_cast(Idx0)) { - int64_t Idx0Val = CI->getSExtValue(); - if (NumElements > 0 && Idx0Val >= 0 && - (uint64_t)Idx0Val < NumElements) - IsSequentialAccessInRange = true; + if (NumElements > 0) { + if (ConstantInt *CI = dyn_cast(Idx0)) { + int64_t Idx0Val = CI->getSExtValue(); + if (Idx0Val >= 0 && (uint64_t)Idx0Val < NumElements) + IsSequentialAccessInRange = true; + } } else if (PointerType *PTy = dyn_cast(LastTy)) // Only handle pointers to sized types, not pointers to functions. if (PTy->getElementType()->isSized())