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.

Reply via email to