On 10/19/2016 07:19 PM, David Malcolm wrote:
I already dropped LABEL_NUSES in compact mode in r241120; I think it's
possible to regenerate that information.

But how would we go about recreating the JUMP_LABEL data?  As far as I
can tell, it can be set up by reorg.c:make_return_insns
via comparison against function_return_label and
function_simple_return_label, which are set up by find_end_label; the
functions in question are non-trivial, and can lead to extra insns
being emitted.  Also, in shrink-wrap.c:handle_simple_exit, which has
similar state considerations.

I'd expect every return/simple_return insn to contain the corresponding rtx code. mark_jump_label_1 has this, which supports the theory:

    case RETURN:
    case SIMPLE_RETURN:
      if (is_target)
        {
          gcc_assert (JUMP_LABEL (insn) == NULL || JUMP_LABEL (insn) == x);
          JUMP_LABEL (insn) = x;
        }
      return;

This is called via mark_all_labels from rebuild_jump_labels_1, so it should Just Work - in theory.

It seems simpler to serialize this information.

Simpler, probably, but it would be nice to omit it if it really is redundant.


Bernd

Reply via email to