On Fri, 12 Jan 2024, Jakub Jelinek wrote: > Hi! > > This is the case I was talking about in > https://gcc.gnu.org/pipermail/gcc-patches/2024-January/642423.html > and Zdenek kindly found a testcase for it. > We can only create BITINT_TYPE with precision at most 65535, not 65536, > so need to punt if we'd want to create it. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
OK > 2024-01-12 Jakub Jelinek <ja...@redhat.com> > > PR tree-optimization/113330 > * tree-sra.cc (create_access): Punt for BITINT_TYPE accesses with > too large size. > > * gcc.dg/bitint-69.c: New test. > > --- gcc/tree-sra.cc.jj 2024-01-10 12:45:54.293851670 +0100 > +++ gcc/tree-sra.cc 2024-01-11 15:13:29.697073438 +0100 > @@ -967,6 +967,12 @@ create_access (tree expr, gimple *stmt, > disqualify_candidate (base, "Encountered an access beyond the base."); > return NULL; > } > + if (TREE_CODE (TREE_TYPE (expr)) == BITINT_TYPE > + && size > WIDE_INT_MAX_PRECISION - 1) > + { > + disqualify_candidate (base, "Encountered too large _BitInt access."); > + return NULL; > + } > > access = create_access_1 (base, offset, size); > access->expr = expr; > --- gcc/testsuite/gcc.dg/bitint-69.c.jj 2024-01-11 15:16:57.573140907 > +0100 > +++ gcc/testsuite/gcc.dg/bitint-69.c 2024-01-12 09:55:30.026374627 +0100 > @@ -0,0 +1,25 @@ > +/* PR tree-optimization/113330 */ > +/* { dg-do compile { target bitint } } */ > +/* { dg-require-stack-check "generic" } */ > +/* { dg-options "-std=c23 -O --param=large-stack-frame=131072 > -fstack-check=generic --param=sccvn-max-alias-queries-per-access=0" } */ > + > +_BitInt(8) a; > + > +static inline __attribute__((__always_inline__)) void > +bar (int, int, int, int, int, int, int, int) > +{ > +#if __BITINT_MAXWIDTH__ >= 65535 > + _BitInt(65535) b = 0; > + _BitInt(383) c = 0; > +#else > + _BitInt(63) b = 0; > + _BitInt(39) c = 0; > +#endif > + a = b; > +} > + > +void > +foo (void) > +{ > + bar (0, 0, 0, 0, 0, 0, 0, 0); > +} > > Jakub > > -- 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)