re PR tree-optimization/77824 (unreachable code in SLSR GIMPLE pass)
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Mon, 10 Oct 2016 18:39:41 +0000 (18:39 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Mon, 10 Oct 2016 18:39:41 +0000 (18:39 +0000)
2016-10-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/77824
* gimple-ssa-strength-reduction.c (stmt_cost): Explicitly return
zero cost for copies.
(find_candidates_dom_walker::before_dom_children): Replace
MODIFY_EXPR with SSA_NAME.
(replace_mult_candidate): Likewise.
(replace_profitable_candidates): Likewise.

From-SVN: r240945

gcc/ChangeLog
gcc/gimple-ssa-strength-reduction.c

index 2d5e330725becd3ac2bd536b8f942abbc699f620..1738bc7e7feb534112738c1183913c2831c50610 100644 (file)
@@ -1,3 +1,13 @@
+2016-10-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/77824
+       * gimple-ssa-strength-reduction.c (stmt_cost): Explicitly return
+       zero cost for copies.
+       (find_candidates_dom_walker::before_dom_children): Replace
+       MODIFY_EXPR with SSA_NAME.
+       (replace_mult_candidate): Likewise.
+       (replace_profitable_candidates): Likewise.
+
 2016-10-10  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * config/s390/s390.h: Wrap more macros args in brackets and fix
index 7b14b91fed4ed3ef892f3f01e4d5767488bc1ceb..b1a6602ef0248aea7cacca39edd78cce1c9cf76e 100644 (file)
@@ -688,6 +688,9 @@ stmt_cost (gimple *gs, bool speed)
 
     /* Note that we don't assign costs to copies that in most cases
        will go away.  */
+    case SSA_NAME:
+      return 0;
+      
     default:
       ;
     }
@@ -1693,7 +1696,7 @@ find_candidates_dom_walker::before_dom_children (basic_block bb)
              gcc_fallthrough ();
 
            CASE_CONVERT:
-           case MODIFY_EXPR:
+           case SSA_NAME:
            case NEGATE_EXPR:
              rhs1 = gimple_assign_rhs1 (gs);
              if (TREE_CODE (rhs1) != SSA_NAME)
@@ -1724,7 +1727,7 @@ find_candidates_dom_walker::before_dom_children (basic_block bb)
              slsr_process_cast (gs, rhs1, speed);
              break;
 
-           case MODIFY_EXPR:
+           case SSA_NAME:
              slsr_process_copy (gs, rhs1, speed);
              break;
 
@@ -2010,7 +2013,7 @@ replace_mult_candidate (slsr_cand_t c, tree basis_name, widest_int bump)
       && bump.to_shwi () != HOST_WIDE_INT_MIN
       /* It is not useful to replace casts, copies, or adds of
         an SSA name and a constant.  */
-      && cand_code != MODIFY_EXPR
+      && cand_code != SSA_NAME
       && !CONVERT_EXPR_CODE_P (cand_code)
       && cand_code != PLUS_EXPR
       && cand_code != POINTER_PLUS_EXPR
@@ -3445,7 +3448,7 @@ replace_profitable_candidates (slsr_cand_t c)
         to a cast or copy.  */
       if (i >= 0
          && profitable_increment_p (i) 
-         && orig_code != MODIFY_EXPR
+         && orig_code != SSA_NAME
          && !CONVERT_EXPR_CODE_P (orig_code))
        {
          if (phi_dependent_cand_p (c))