https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121663
--- Comment #5 from Jan Hubicka <hubicka at ucw dot cz> --- > Looks like that. LOCATION_LINE is int, so when #line overflows it becomes > negative up to -2 and -1. The hash_map uses int_hash<int64_t, -1, -2> though, > which is 64-bit signed with -1 and -2 special values (Empty and Deleted). > So, one possibility would be > --- gcc/tree-cfg.cc.jj 2025-08-23 15:00:04.928779140 +0200 > +++ gcc/tree-cfg.cc 2025-09-01 15:50:45.491819750 +0200 > @@ -1098,7 +1098,8 @@ assign_discriminator (location_t loc, un > hash_map<int_hash <int64_t, -1, -2>, discrim_entry> > &map) > { > bool existed; > - discrim_entry &e = map.get_or_insert (LOCATION_LINE (loc), &existed); > + discrim_entry &e > + = map.get_or_insert ((unsigned) LOCATION_LINE (loc), &existed); Thanks for looking into that. I think it is odd to have LOCATION_LINE set up in a way it can meaningfully return negative values. Casting to unsigned here look good to me. Honza