On Wed, 15 Jan 2025, Jakub Jelinek wrote: > Hi! > > Other spots in cgraphunit.cc already call bitmap_obstack_initialize (NULL); > before running a pass list and bitmap_obstack_release (NULL); after that, > while process_new_functions wasn't doing that and with the new r15-130 > bitmap_alloc checking that results in ICE. > > Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for > trunk?
OK (also for backports). Thanks, Richard. > 2025-01-15 Jakub Jelinek <ja...@redhat.com> > > PR ipa/116068 > * cgraphunit.cc (symbol_table::process_new_functions): Call > bitmap_obstack_initialize (NULL); and bitmap_obstack_release (NULL) > around processing the functions. > > * gcc.dg/graphite/pr116068.c: New test. > > --- gcc/cgraphunit.cc.jj 2025-01-02 20:54:31.745135236 +0100 > +++ gcc/cgraphunit.cc 2025-01-14 14:31:14.016349672 +0100 > @@ -311,6 +311,7 @@ symbol_table::process_new_functions (voi > { > cgraph_node *node = cgraph_new_nodes[i]; > fndecl = node->decl; > + bitmap_obstack_initialize (NULL); > switch (state) > { > case CONSTRUCTION: > @@ -367,6 +368,7 @@ symbol_table::process_new_functions (voi > gcc_unreachable (); > break; > } > + bitmap_obstack_release (NULL); > } > > cgraph_new_nodes.release (); > --- gcc/testsuite/gcc.dg/graphite/pr116068.c.jj 2025-01-14 > 14:26:34.184285576 +0100 > +++ gcc/testsuite/gcc.dg/graphite/pr116068.c 2025-01-14 14:30:41.161811787 > +0100 > @@ -0,0 +1,26 @@ > +/* PR ipa/116068 */ > +/* { dg-do compile { target { lto && { bitint && int128 } } } } */ > +/* { dg-options "-Os -flto -ffat-lto-objects -floop-parallelize-all > -ftree-parallelize-loops=2 --param=parloops-schedule=dynamic" } */ > + > +#if __BITINT_MAXWIDTH__ >= 1024 > +typedef _BitInt (1024) A; > +typedef __attribute__((__vector_size__ (16))) char B; > +typedef __attribute__((__vector_size__ (16))) int C; > +B a; > +A b; > +int c; > +unsigned int *p; > + > +void > +foo0 (unsigned _BitInt (512) x) > +{ > + C d = {}; > + _BitInt (1024) e = x | *(A *) __builtin_memset (&b, c, 8); > + unsigned h = __builtin_stdc_first_leading_zero (*p); > + C f = *(C *) __builtin_memset (&d, h, 6); > + B g = (B) f; > + a = g + (B) (__int128) e; > +} > +#else > +int i; > +#endif > > 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)