From ab448cfa68bc2686ba6fcf54e1ee40acd5e403a8 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Mon, 30 Jan 2012 13:40:24 +0000 Subject: [PATCH] re PR middle-end/52045 (ICE: in execute_todo, at passes.c:1748 with -O3 -ftracer -fno-tree-ccp -fno-tree-copy-prop -fno-tree-dce and stpcpy_chk()) 2012-01-30 Richard Guenther PR tree-optimization/52045 * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Update SSA form if cfgcleanup did anything. * gcc.dg/pr52045.c: New testcase. From-SVN: r183722 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr52045.c | 11 +++++++++++ gcc/tree-optimize.c | 6 ++++-- 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr52045.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9414b24b057..e62c447b7b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-01-30 Richard Guenther + + PR tree-optimization/52045 + * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Update + SSA form if cfgcleanup did anything. + 2012-01-30 Richard Guenther PR tree-optimization/52045 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 77ad64db661..65a9a7a0f54 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-01-30 Richard Guenther + + PR tree-optimization/52045 + * gcc.dg/pr52045.c: New testcase. + 2012-01-30 Greta Yorsh * gcc.target/arm/di-longlong64-sync-withldrexd.c: Accept diff --git a/gcc/testsuite/gcc.dg/pr52045.c b/gcc/testsuite/gcc.dg/pr52045.c new file mode 100644 index 00000000000..888ddb6a129 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr52045.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -ftracer -fno-tree-ccp -fno-tree-copy-prop -fno-tree-dce" } */ + +char *vx; +char buf[20]; + +void +foo (void) +{ + vx = __builtin___stpcpy_chk (buf, vx ? "gh" : "e", sizeof(buf)); +} diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index d242204b671..3d18d20a003 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -157,7 +157,9 @@ struct gimple_opt_pass pass_all_early_optimizations = static unsigned int execute_cleanup_cfg_post_optimizing (void) { - cleanup_tree_cfg (); + unsigned int todo = 0; + if (cleanup_tree_cfg ()) + todo |= TODO_update_ssa; maybe_remove_unreachable_handlers (); cleanup_dead_labels (); group_case_labels (); @@ -190,7 +192,7 @@ execute_cleanup_cfg_post_optimizing (void) } } } - return 0; + return todo; } struct gimple_opt_pass pass_cleanup_cfg_post_optimizing = -- 2.30.2