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? 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