diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr90898.c | 16 | ||||
-rw-r--r-- | gcc/tree-ssa-ccp.c | 8 |
4 files changed, 29 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 97bc515..1ad5071 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-11-20 Jakub Jelinek <jakub@redhat.com> + + PR c/90898 + * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Remove + assertion. + (insert_clobbers_for_var): Fix a typo in function comment. + 2019-11-20 Jiangning Liu <jiangning.liu@amperecomputing.com> Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 920f8eb..004e245 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2019-11-20 Jakub Jelinek <jakub@redhat.com> + PR c/90898 + * gcc.dg/pr90898.c: New test. + PR middle-end/91195 * gcc.dg/pr91195.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr90898.c b/gcc/testsuite/gcc.dg/pr90898.c new file mode 100644 index 0000000..e992ea3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr90898.c @@ -0,0 +1,16 @@ +/* PR c/90898 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void *p; +int bar (void); +void baz (int *); + +void +foo (void) +{ + p = __builtin_stack_save (); + int a[(bar (), 2)]; + baz (a); + __builtin_stack_restore (p); +} diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 1e8e472..72e15b1 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -2114,8 +2114,6 @@ insert_clobber_before_stack_restore (tree saved_val, tree var, else if (gimple_assign_ssa_name_copy_p (stmt)) insert_clobber_before_stack_restore (gimple_assign_lhs (stmt), var, visited); - else - gcc_assert (is_gimple_debug (stmt)); } /* Advance the iterator to the previous non-debug gimple statement in the same @@ -2140,9 +2138,9 @@ gsi_prev_dom_bb_nondebug (gimple_stmt_iterator *i) /* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert a clobber of VAR before each matching BUILT_IN_STACK_RESTORE. - It is possible that BUILT_IN_STACK_SAVE cannot be find in a dominator when a - previous pass (such as DOM) duplicated it along multiple paths to a BB. In - that case the function gives up without inserting the clobbers. */ + It is possible that BUILT_IN_STACK_SAVE cannot be found in a dominator when + a previous pass (such as DOM) duplicated it along multiple paths to a BB. + In that case the function gives up without inserting the clobbers. */ static void insert_clobbers_for_var (gimple_stmt_iterator i, tree var) |