On Mon, 5 Feb 2024, Tamar Christina wrote: > Hi All, > > This just adds an additional runtime testcase for the fixed issue. > > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > Ok for master?
I think you need a lp64 target check for the large constants or alternatively use uint64_t? > Thanks, > Tamar > > gcc/testsuite/ChangeLog: > > PR tree-optimization/113467 > * gcc.dg/vect/vect-early-break_110-pr113467.c: New test. > > --- inline copy of patch -- > diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_110-pr113467.c > b/gcc/testsuite/gcc.dg/vect/vect-early-break_110-pr113467.c > new file mode 100644 > index > 0000000000000000000000000000000000000000..2d8a071c0e922ccfd5fa8c7b27044444852dbd95 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_110-pr113467.c > @@ -0,0 +1,51 @@ > +/* { dg-add-options vect_early_break } */ > +/* { dg-require-effective-target vect_early_break } */ > +/* { dg-require-effective-target vect_int } */ > + > +/* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */ > + > +#include "tree-vect.h" > + > +typedef struct gcry_mpi *gcry_mpi_t; > +struct gcry_mpi { > + int nlimbs; > + unsigned long *d; > +}; > + > +long gcry_mpi_add_ui_up; > +void gcry_mpi_add_ui(gcry_mpi_t w, gcry_mpi_t u, unsigned v) { > + gcry_mpi_add_ui_up = *w->d; > + if (u) { > + unsigned long *res_ptr = w->d, *s1_ptr = w->d; > + int s1_size = u->nlimbs; > + unsigned s2_limb = v, x = *s1_ptr++; > + s2_limb += x; > + *res_ptr++ = s2_limb; > + if (x) > + while (--s1_size) { > + x = *s1_ptr++ + 1; > + *res_ptr++ = x; > + if (x) { > + break; > + } > + } > + } > +} > + > +int main() > +{ > + check_vect (); > + > + static struct gcry_mpi sv; > + static unsigned long vals[] = {4294967288, 191, 4160749568, > 4294963263, > + 127, 4294950912, 255, > 4294901760, > + 534781951, 33546240, 4294967292, > 4294960127, > + 4292872191, 4294967295, 4294443007, 3}; > + gcry_mpi_t v = &sv; > + v->nlimbs = 16; > + v->d = vals; > + > + gcry_mpi_add_ui(v, v, 8); > + if (v->d[1] != 192) > + __builtin_abort(); > +} > > > > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)