[PATCH] D69627: [SLP]Fix PR43799: Crash on different sizes of GEP indices.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 30 12:58:10 PDT 2019


ABataev added inline comments.


================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:4098-4099
+          auto *CI = cast<ConstantInt>(V);
+          V = ConstantExpr::getIntegerCast(CI, Ty,
+                                           CI->getValue().isSignBitSet());
+        }
----------------
spatel wrote:
> ABataev wrote:
> > spatel wrote:
> > > I think it's already a fuzzer corner case that we have different types in the bug report example, but let's take that 1 step further: what if the index type in IR is larger than getIntPtrType()? We might illegally truncate a large constant value. 
> > > 
> > > Safer to just give up completely if we find mismatched GEP index types?
> > Maybe, just give up if GEP at least one index type is larger than intptr?
> That should work, but it seems like we are adding code complexity for no real-world reason. Unless I'm misunderstanding - do we have real code / tests where the GEP indexes are different sizes?
It does not add a lot of complexity here, just a few additional lines of code.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69627/new/

https://reviews.llvm.org/D69627





More information about the llvm-commits mailing list