[llvm] r273105 - [LoadCombine] Combine Loads formed from GEPS with negative indexes
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 19 00:08:34 PDT 2016
On Sat, Jun 18, 2016 at 11:14 PM, David Majnemer via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: majnemer
> Date: Sun Jun 19 01:14:56 2016
> New Revision: 273105
>
> URL: http://llvm.org/viewvc/llvm-project?rev=273105&view=rev
> Log:
> [LoadCombine] Combine Loads formed from GEPS with negative indexes
>
> Change the underlying offset and comparisons to use int64_t instead of
> uint64_t.
>
> Patch by River Riddle!
>
> Differential Revision: http://reviews.llvm.org/D21499
>
> Added:
> llvm/trunk/test/Transforms/LoadCombine/load-combine-negativegep.ll
> Modified:
> llvm/trunk/lib/Transforms/Scalar/LoadCombine.cpp
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LoadCombine.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoadCombine.cpp?rev=273105&r1=273104&r2=273105&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LoadCombine.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LoadCombine.cpp Sun Jun 19 01:14:56
> 2016
> @@ -40,7 +40,7 @@ STATISTIC(NumLoadsCombined, "Number of l
> namespace {
> struct PointerOffsetPair {
> Value *Pointer;
> - uint64_t Offset;
> + int64_t Offset;
> };
>
> struct LoadPOPPair {
> @@ -102,7 +102,7 @@ PointerOffsetPair LoadCombine::getPointe
> unsigned BitWidth = DL.getPointerTypeSizeInBits(GEP->getType());
> APInt Offset(BitWidth, 0);
> if (GEP->accumulateConstantOffset(DL, Offset))
> - POP.Offset += Offset.getZExtValue();
> + POP.Offset += Offset.getSExtValue();
>
This line seems a bit suspcious... one, it assumes pointers are never more
than 64 bits wide, and two, the addition could have signed overflow.
-Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160619/269f11b3/attachment.html>
More information about the llvm-commits
mailing list