From: Benjamin Kramer Date: Mon, 20 Feb 2012 18:45:10 +0000 (+0000) Subject: InstCombine: Removing the base from the address calculation is only safe when the... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6ad48f413743366c91b088a8e39d7f882200429d;p=oota-llvm.git InstCombine: Removing the base from the address calculation is only safe when the GEPs are inbounds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150978 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/InstCombine/InstCombineCompares.cpp b/lib/Transforms/InstCombine/InstCombineCompares.cpp index 5a91c7b9702..b62f6e20496 100644 --- a/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -610,7 +610,7 @@ Instruction *InstCombiner::FoldGEPICmp(GEPOperator *GEPLHS, Value *RHS, // If we're comparing GEPs with two base pointers that only differ in type // and both GEPs have only constant indices or just one use, then fold // the compare with the adjusted indices. - if (TD && + if (TD && GEPLHS->isInBounds() && GEPRHS->isInBounds() && (GEPLHS->hasAllConstantIndices() || GEPLHS->hasOneUse()) && (GEPRHS->hasAllConstantIndices() || GEPRHS->hasOneUse()) && PtrBase->stripPointerCasts() ==