]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR tree-optimization/70177
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Mar 2016 12:28:50 +0000 (12:28 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Mar 2016 12:28:50 +0000 (12:28 +0000)
* gimple-expr.h (extract_ops_from_tree_1): Renamed to ...
(extract_ops_from_tree): ... this.  In the 2 argument
overload remove _1 suffix.
* gimple-expr.c (extract_ops_from_tree_1): Renamed to ...
(extract_ops_from_tree): ... this.
* gimple.c (gimple_build_assign, gimple_assign_set_rhs_from_tree):
Adjust callers.
* tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
* tree-ssa-forwprop.c (defcodefor_name): Call 3 operand
extract_ops_from_tree instead of 2 operand one.

* gcc.dg/pr70177.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234140 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimple-expr.c
gcc/gimple-expr.h
gcc/gimple.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr70177.c [new file with mode: 0644]
gcc/tree-ssa-forwprop.c
gcc/tree-ssa-loop-niter.c

index 2014d7f4c37b804f09b05ba361c9e17959f1855d..d39d197adc95e6ee5a2659eadad2f4d81613569b 100644 (file)
@@ -1,3 +1,17 @@
+2016-03-11  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/70177
+       * gimple-expr.h (extract_ops_from_tree_1): Renamed to ...
+       (extract_ops_from_tree): ... this.  In the 2 argument
+       overload remove _1 suffix.
+       * gimple-expr.c (extract_ops_from_tree_1): Renamed to ...
+       (extract_ops_from_tree): ... this.
+       * gimple.c (gimple_build_assign, gimple_assign_set_rhs_from_tree):
+       Adjust callers.
+       * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
+       * tree-ssa-forwprop.c (defcodefor_name): Call 3 operand
+       extract_ops_from_tree instead of 2 operand one.
+
 2016-03-11  Alan Lawrence  <alan.lawrence@arm.com>
 
        PR tree-optimization/70013
index 15bef7f1665c20dfc29d46565dd972a11feaa270..29e9c0a33dcc979c0a11aabd6d119e52fb11c11b 100644 (file)
@@ -519,8 +519,8 @@ create_tmp_reg_fn (struct function *fn, tree type, const char *prefix)
    *OP1_P, *OP2_P and *OP3_P respectively.  */
 
 void
-extract_ops_from_tree_1 (tree expr, enum tree_code *subcode_p, tree *op1_p,
-                        tree *op2_p, tree *op3_p)
+extract_ops_from_tree (tree expr, enum tree_code *subcode_p, tree *op1_p,
+                      tree *op2_p, tree *op3_p)
 {
   enum gimple_rhs_class grhs_class;
 
index 7f9c90d4f1b1c8725714e4233405b70944979200..f2ccd29a94a6a36a09ffa947f117d959ada97689 100644 (file)
@@ -35,8 +35,8 @@ extern tree create_tmp_reg (tree, const char * = NULL);
 extern tree create_tmp_reg_fn (struct function *, tree, const char *);
 
 
-extern void extract_ops_from_tree_1 (tree, enum tree_code *, tree *, tree *,
-                                    tree *);
+extern void extract_ops_from_tree (tree, enum tree_code *, tree *, tree *,
+                                  tree *);
 extern void gimple_cond_get_ops_from_tree (tree, enum tree_code *, tree *,
                                           tree *);
 extern bool is_gimple_lvalue (tree);
@@ -146,15 +146,15 @@ is_gimple_constant (const_tree t)
     }
 }
 
-/* A wrapper around extract_ops_from_tree_1, for callers which expect
-   to see only a maximum of two operands.  */
+/* A wrapper around extract_ops_from_tree with 3 ops, for callers which
+   expect to see only a maximum of two operands.  */
 
 static inline void
 extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
                       tree *op1)
 {
   tree op2;
-  extract_ops_from_tree_1 (expr, code, op0, op1, &op2);
+  extract_ops_from_tree (expr, code, op0, op1, &op2);
   gcc_assert (op2 == NULL_TREE);
 }
 
index 850e54669cd6fd74280da714c9c4c402723ea414..b0e19d515cf0baccd64ba11886357785d7a05742 100644 (file)
@@ -387,7 +387,7 @@ gimple_build_assign (tree lhs, tree rhs MEM_STAT_DECL)
   enum tree_code subcode;
   tree op1, op2, op3;
 
-  extract_ops_from_tree_1 (rhs, &subcode, &op1, &op2, &op3);
+  extract_ops_from_tree (rhs, &subcode, &op1, &op2, &op3);
   return gimple_build_assign (lhs, subcode, op1, op2, op3 PASS_MEM_STAT);
 }
 
@@ -1578,7 +1578,7 @@ gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *gsi, tree expr)
   enum tree_code subcode;
   tree op1, op2, op3;
 
-  extract_ops_from_tree_1 (expr, &subcode, &op1, &op2, &op3);
+  extract_ops_from_tree (expr, &subcode, &op1, &op2, &op3);
   gimple_assign_set_rhs_with_ops (gsi, subcode, op1, op2, op3);
 }
 
index cc3ad502c127b70509c5887c548c2008a3acedda..c6ec9304445345156e60a46567746de215234257 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-11  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/70177
+       * gcc.dg/pr70177.c: New test.
+
 2016-03-11  Alan Lawrence  <alan.lawrence@arm.com>
 
        * gfortran.dg/unconstrained_commons.f: Widen regexp to match j_<N>.
diff --git a/gcc/testsuite/gcc.dg/pr70177.c b/gcc/testsuite/gcc.dg/pr70177.c
new file mode 100644 (file)
index 0000000..1b2bec1
--- /dev/null
@@ -0,0 +1,15 @@
+/* PR tree-optimization/70177 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int b[128];
+
+void
+foo (int i, int j)
+{
+  int c, f, g, h;
+  for (g = 0; g < 64; g++)
+    for (h = g, f = 0; f <= i; f++, h++)
+      for (c = 0; c < j; c++)
+       b[h] = 0;
+}
index 6575d500a92f07ecad454dac87044f7c34e1cdb2..f64ee0a81142b327b442c4fa3bb420120a834053 100644 (file)
@@ -1477,7 +1477,7 @@ defcodefor_name (tree name, enum tree_code *code, tree *arg1, tree *arg2)
           || GIMPLE_BINARY_RHS
           || GIMPLE_UNARY_RHS
           || GIMPLE_SINGLE_RHS)
-    extract_ops_from_tree_1 (name, &code1, &arg11, &arg21, &arg31);
+    extract_ops_from_tree (name, &code1, &arg11, &arg21, &arg31);
 
   *code = code1;
   *arg1 = arg11;
index 43632edfe5d7ab20b77e344d208165096b1e109c..81689fc1aa432d710dfaa0ca76fc30ab1f09c609 100644 (file)
@@ -2742,9 +2742,9 @@ static widest_int
 derive_constant_upper_bound (tree val)
 {
   enum tree_code code;
-  tree op0, op1;
+  tree op0, op1, op2;
 
-  extract_ops_from_tree (val, &code, &op0, &op1);
+  extract_ops_from_tree (val, &code, &op0, &op1, &op2);
   return derive_constant_upper_bound_ops (TREE_TYPE (val), op0, code, op1);
 }