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