On 02/24/2016 03:53 PM, Martin Liška wrote:
On 02/24/2016 03:27 PM, Michael Matz wrote:
But nothing can set ENABLE_CHECKING anymore (the macro is meanwhile called
CHECKING_P), so all that code is dead anyway.  So either the new macro
should be used or that code should be removed.

Good point, well the change is quite recent (12-2015). I'm adding
the author of the code to make a decision about it.

Thanks for the heads up! That’s kind of funny: the check associated with this dw_loc_frame_offset field revealed a bug to us (at AdaCore) very recently, so I think we should keep it in one form or another.

This field takes one int slot in the dw_loc_descr_node structure, so I guess not having it in release mode is important (that’s what Jason said in <https://gcc.gnu.org/ml/gcc-patches/2015-11/msg02267.html>). Here’s what I think:

  * This field is used only in the resolve_args_picking graph traversal
    for a consistency check in already visited nodes.

  * resolve_args_picking has a hash set to remember the already visited
    nodes.

  * The consistency check itself has almost no runtime cost: we’re
    doing the graph traversal in release mode anyway.

So what about removing the field (in struct dw_loc_descr_node) and replacing the visited hash set with a frame_offset hash map (in resolve_args_picking)? This hash map would remember the information we currently store in the field.

This is a little change, but I can take care of this if you want. I’m a little bit desynchronized with the development pace these days: would this be for stage 4 or GCC 7?

--
Pierre-Marie de Rodat

Reply via email to