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

Dávid Bolvanský via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 30 13:06:48 PDT 2019


xbolva00 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());
+        }
----------------
ABataev wrote:
> 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.
@spatel:
Recent memcmp related patch uses CreateGEP_64 (dont know exact name atm; index is i64) - could it be affected with your proposed stronger bail out?. We should be careful to not pessimize the code generated by own passes.


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