https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116898
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW CC| |amacleod at redhat dot com Last reconfirmed| |2024-09-30 --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The bitint lowering pass emits some gimple statements on edges (gsi_insert_on_edge) and the edge insertions are (intentionally) committed to edges only at the end of pass (gsi_commit_edge_inserts ()). So, what the gimple cache sees here is an SSA_NAME set in a stmt queued on edge. Either the range cache can be adjusted not to fail assertion in cases like that but just pretend it doesn't know the range of something not yet in the IL (perhaps under some flag), or I'll need to revamp the pass to repeat the handle_operand_addr and .{ADD,SUB}_OVERFLOW discovery to find out where range_to_prec -> range_of_expr would be actually called, remember it in some hash table or whatever data structure and then during actual pass don't use range_of_expr anymore and just look up what has been remembered. If the former would be possible, I'd certainly prefer that.