https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77823

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 39735
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39735&action=edit
gcc7-pr77823.patch

Short patch to fix the ICE.

That said, we should think of what to do with the generic vector extension for
-fsanitize=undefined, right now we don't instrument anything.
For stuff like shift, division, signed-integer-overflow, maybe also bool/enum
for vectors of bool or enum, float-divide/float-cast, we either should modify
the libubsan library, so that it would handle TK_Vector_Integer and
TK_Vector_Float, likely use always passing by reference and somehow encode both
the bit width of the elements and their kinds and also the number of elements
in the vector (or log2 thereof) in the TypeInfo field and teach it how to print
vectors {El1, El2, El3, El4} etc.? - then we could at least for some of the
tests use also vector operations, e.g. for vector << vector shifts compare the
second operand against vector containing element precision repeated, etc., or
instead instrument it as a loop over number of elements, checking each
operation separately (and reporting the individual overflow on each element
separately, then as value we'd just use the scalars).

Reply via email to