This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Questions about tree-cfg.c:remove_forwarder_block.


Hi,

tree-cfg.c:remove_forwarder_block contains

  /* If the destination block consists of an nonlocal label, do not merge
     it.  */
  label = first_stmt (bb);
  if (label
      && TREE_CODE (label) == LABEL_EXPR
      && DECL_NONLOCAL (LABEL_EXPR_LABEL (label)))
    return false;

1) Is a nonlocal label guaranteed to be the first statement?  If not,
   we need to fix the code above such that it will scan all labels of
   the given basic block, looking for a nonlocal label just like
   tree_forwarder_block_p.

2) Should "first_stmt (bb)" be "first_stmt (dest)?  The comment and
   and the code do not agree.  Plus, the code as is is completely
   subsumed by tree_forwarder_block_p.

Thanks in advance,

Kazu Hirata


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]