From 462ab9810dd1774970e44264c35e8aec35e7460a Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Sun, 16 Oct 2022 23:24:06 +0100 Subject: [PATCH] [ConstraintElim] Fix signed integer overflow for inbounds GEP. For inbounds GEPs, signed overflow yields poison, so it is fine for the coefficients to wrap as well. This fixes an UBSan failure. --- llvm/lib/Transforms/Scalar/ConstraintElimination.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp index 1be2358..c208eb3 100644 --- a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp +++ b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp @@ -270,7 +270,7 @@ decomposeGEP(GetElementPtrInst &GEP, Result.emplace_back(Scale, Index); } else { for (auto &KV : IdxResult) - KV.Coefficient *= Scale; + KV.Coefficient = multiplyWithOverflow(KV.Coefficient, Scale); Result[0].Coefficient += IdxResult[0].Coefficient; append_range(Result, ArrayRef(IdxResult).drop_front()); } -- 2.7.4