From c1781047ab626bd67efc080b425d0c5a4a6cf58e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 7 Mar 2013 00:26:42 +0100 Subject: [PATCH] re PR tree-optimization/56539 (ICE: verify_ssa failed: caused by -foptimize-sibling-calls) PR tree-optimization/56539 * tree-tailcall.c (adjust_return_value_with_ops): Use GSI_SAME_STMT instead of GSI_CONTINUE_LINKING as last argument to force_gimple_operand_gsi. * gcc.c-torture/compile/pr56539.c: New test. From-SVN: r196511 --- gcc/ChangeLog | 5 +++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr56539.c | 7 +++++++ gcc/tree-tailcall.c | 6 +++--- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr56539.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index caa77ae509a..d8e9dee878e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2013-03-06 Jakub Jelinek + PR tree-optimization/56539 + * tree-tailcall.c (adjust_return_value_with_ops): Use GSI_SAME_STMT + instead of GSI_CONTINUE_LINKING as last argument to + force_gimple_operand_gsi. Adjust function comment. + * config/aarch64/t-aarch64 (TM_H, OPTIONS_H_EXTRA): Add aarch64-cores.def. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e2aa7af51c9..7e688636779 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-03-06 Jakub Jelinek + + PR tree-optimization/56539 + * gcc.c-torture/compile/pr56539.c: New test. + 2013-03-06 Kai Tietz * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin diff --git a/gcc/testsuite/gcc.c-torture/compile/pr56539.c b/gcc/testsuite/gcc.c-torture/compile/pr56539.c new file mode 100644 index 00000000000..0fba96f4c8d --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr56539.c @@ -0,0 +1,7 @@ +/* PR tree-optimization/56539 */ + +short +foo (const char *x, unsigned y) +{ + return y > 1 ? (x[y - 1] - '0') + 10 * foo (x, y - 1) : (*x - '0'); +} diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 80c0521d831..c6581dcedcd 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -599,8 +599,8 @@ add_successor_phi_arg (edge e, tree var, tree phi_arg) } /* Creates a GIMPLE statement which computes the operation specified by - CODE, OP0 and OP1 to a new variable with name LABEL and inserts the - statement in the position specified by GSI and UPDATE. Returns the + CODE, ACC and OP1 to a new variable with name LABEL and inserts the + statement in the position specified by GSI. Returns the tree node of the statement's result. */ static tree @@ -622,7 +622,7 @@ adjust_return_value_with_ops (enum tree_code code, const char *label, fold_convert (TREE_TYPE (op1), acc), op1)); rhs = force_gimple_operand_gsi (&gsi, rhs, - false, NULL, true, GSI_CONTINUE_LINKING); + false, NULL, true, GSI_SAME_STMT); stmt = gimple_build_assign (result, rhs); } -- 2.30.2