-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

First in tree-ssa-live.c, "ann" is set, but never used in a couple places.

Second, in tree-ssa-copy.c we set "stmt" in
propagate_tree_value_into_stmt, but never use it.  Removing the
assignment is obviously trivial.

Finally, in cfglayout force_nonfallthru may delete its argument (E_FALL)
which we then use.  The fix is to save E_FALL->src prior to the call to
force_nonfallthru.

Bootstrapped and regression tested on x86_64-unknown-linux-gnu.  OK for
trunk?

Thanks,
Jeff
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNi1dDAAoJEBRtltQi2kC7b8kIAIsiwpn3FieHNWhn5RGFdn85
mXoknFh9Ybc71XOKU80UAWCxX61iCImJoqKJNdAEi1S4KLRboKIzEv2OrNjNbt4r
c8EO8K8Q42NJ3IcinbHuqWK9KxhRuWso2w4VEMVS8gOHgSl12PA2C2LYMWLXa0l5
EgNNta6HWCD1uC8EL7Zt+3vMLRY7Ru+bVbR1T58miRe9CatK5Iz85T3FZ0qfPr4z
Lp8aHCPcRQlabqgk2Thr/cexK3ZdTFXdHP+F3e60GlPEB7Y0nbwrZIvHW+RWj2z0
Et4wEEUnrCXbqJMaZgrHaOl5lierXKMy2FPc/tMSrUO6kw920Y8PzNMQweP4QSE=
=cYgV
-----END PGP SIGNATURE-----
        * tree-ssa-live.c (remove_unused_scope_block_p): Remove set but
        unused variable "ann".
        (remove_unused_locals): Likewise.

        * tree-ssa-copy.c (propagate_tree_value_into_stmt): Remove useless
        statement.

        * cfglayout.c (fixup_reorder_chain): Do not dereference E_FALL
        after it is freed.

Index: tree-ssa-live.c
===================================================================
*** tree-ssa-live.c     (revision 171351)
--- tree-ssa-live.c     (working copy)
*************** remove_unused_scope_block_p (tree scope)
*** 427,433 ****
  {
    tree *t, *next;
    bool unused = !TREE_USED (scope);
-   var_ann_t ann;
    int nsubblocks = 0;
  
    for (t = &BLOCK_VARS (scope); *t; t = next)
--- 427,432 ----
*************** remove_unused_scope_block_p (tree scope)
*** 467,474 ****
         info about optimized-out variables in the scope blocks.
         Exception are the scope blocks not containing any instructions
         at all so user can't get into the scopes at first place.  */
!       else if ((ann = var_ann (*t)) != NULL
!              && is_used_p (*t))
        unused = false;
        else if (TREE_CODE (*t) == LABEL_DECL && TREE_USED (*t))
        /* For labels that are still used in the IL, the decision to
--- 466,472 ----
         info about optimized-out variables in the scope blocks.
         Exception are the scope blocks not containing any instructions
         at all so user can't get into the scopes at first place.  */
!       else if (var_ann (*t) != NULL && is_used_p (*t))
        unused = false;
        else if (TREE_CODE (*t) == LABEL_DECL && TREE_USED (*t))
        /* For labels that are still used in the IL, the decision to
*************** remove_unused_locals (void)
*** 690,696 ****
    basic_block bb;
    tree var, t;
    referenced_var_iterator rvi;
-   var_ann_t ann;
    bitmap global_unused_vars = NULL;
    unsigned srcidx, dstidx, num;
  
--- 688,693 ----
*************** remove_unused_locals (void)
*** 766,772 ****
      {
        var = VEC_index (tree, cfun->local_decls, srcidx);
        if (TREE_CODE (var) != FUNCTION_DECL
!         && (!(ann = var_ann (var))
              || !is_used_p (var)))
        {
          if (is_global_var (var))
--- 763,769 ----
      {
        var = VEC_index (tree, cfun->local_decls, srcidx);
        if (TREE_CODE (var) != FUNCTION_DECL
!         && (!var_ann (var)
              || !is_used_p (var)))
        {
          if (is_global_var (var))
*************** remove_unused_locals (void)
*** 798,804 ****
        FOR_EACH_LOCAL_DECL (cfun, ix, var)
        if (TREE_CODE (var) == VAR_DECL
            && is_global_var (var)
!           && (ann = var_ann (var)) != NULL
            && is_used_p (var))
          mark_all_vars_used (&DECL_INITIAL (var), global_unused_vars);
  
--- 795,801 ----
        FOR_EACH_LOCAL_DECL (cfun, ix, var)
        if (TREE_CODE (var) == VAR_DECL
            && is_global_var (var)
!           && var_ann (var) != NULL
            && is_used_p (var))
          mark_all_vars_used (&DECL_INITIAL (var), global_unused_vars);
  
Index: tree-ssa-copy.c
===================================================================
*** tree-ssa-copy.c     (revision 171351)
--- tree-ssa-copy.c     (working copy)
*************** propagate_tree_value_into_stmt (gimple_s
*** 244,250 ****
          expr = gimple_assign_rhs1 (stmt);
        propagate_tree_value (&expr, val);
        gimple_assign_set_rhs_from_tree (gsi, expr);
-       stmt = gsi_stmt (*gsi);
      }
    else if (gimple_code (stmt) == GIMPLE_COND)
      {
--- 244,249 ----
Index: cfglayout.c
===================================================================
*** cfglayout.c (revision 171351)
--- cfglayout.c (working copy)
*************** fixup_reorder_chain (void)
*** 766,772 ****
      {
        edge e_fall, e_taken, e;
        rtx bb_end_insn;
!       basic_block nb;
        edge_iterator ei;
  
        if (EDGE_COUNT (bb->succs) == 0)
--- 766,772 ----
      {
        edge e_fall, e_taken, e;
        rtx bb_end_insn;
!       basic_block nb, src_bb;
        edge_iterator ei;
  
        if (EDGE_COUNT (bb->succs) == 0)
*************** fixup_reorder_chain (void)
*** 894,900 ****
            continue;
        }
  
!       /* We got here if we need to add a new jump insn.  */
        nb = force_nonfallthru (e_fall);
        if (nb)
        {
--- 894,903 ----
            continue;
        }
  
!       /* We got here if we need to add a new jump insn. 
!        Note force_nonfallthru can delete E_FALL and thus we have to
!        save E_FALL->src prior to the call to force_nonfallthru.  */
!       src_bb = e_fall->src;
        nb = force_nonfallthru (e_fall);
        if (nb)
        {
*************** fixup_reorder_chain (void)
*** 905,913 ****
          bb = nb;
  
          /* Make sure new bb is tagged for correct section (same as
!            fall-thru source, since you cannot fall-throu across
             section boundaries).  */
!         BB_COPY_PARTITION (e_fall->src, single_pred (bb));
          if (flag_reorder_blocks_and_partition
              && targetm.have_named_sections
              && JUMP_P (BB_END (bb))
--- 908,916 ----
          bb = nb;
  
          /* Make sure new bb is tagged for correct section (same as
!            fall-thru source, since you cannot fall-thru across
             section boundaries).  */
!         BB_COPY_PARTITION (src_bb, single_pred (bb));
          if (flag_reorder_blocks_and_partition
              && targetm.have_named_sections
              && JUMP_P (BB_END (bb))

Reply via email to