diff options
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/gimple-expr.c | 4 | ||||
-rw-r--r-- | gcc/gimple-expr.h | 10 | ||||
-rw-r--r-- | gcc/gimple.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr70177.c | 15 | ||||
-rw-r--r-- | gcc/tree-ssa-forwprop.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 4 |
8 files changed, 46 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2014d7f..d39d197 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/gimple-expr.c b/gcc/gimple-expr.c index 15bef7f..29e9c0a 100644 --- a/gcc/gimple-expr.c +++ b/gcc/gimple-expr.c @@ -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; diff --git a/gcc/gimple-expr.h b/gcc/gimple-expr.h index 7f9c90d..f2ccd29 100644 --- a/gcc/gimple-expr.h +++ b/gcc/gimple-expr.h @@ -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); } diff --git a/gcc/gimple.c b/gcc/gimple.c index 850e546..b0e19d5 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -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); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cc3ad50..c6ec930 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..1b2bec1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr70177.c @@ -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; +} diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index 6575d50..f64ee0a 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -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; diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 43632ed..81689fc 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -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); } |