From 4f4b0b73e9c56aa71acd787c8eb40121fbfa80e6 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sun, 8 Sep 2013 21:07:28 -0600 Subject: [PATCH] tree-ssa-threadedge.c (thread_across_edge): Fix initialization of 'found'. * tree-ssa-threadedge.c (thread_across_edge): Fix initialization of 'found'. * gcc.c-torture/compile/pr58340.c: New test. From-SVN: r202379 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.c-torture/compile/pr58340.c | 16 ++++++++++++++++ gcc/tree-ssa-threadedge.c | 3 ++- 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr58340.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f3e0b8a9f8..c7ac8f092c8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-09-08 Jeff Law + + PR bootstrap/58340 + * tree-ssa-threadedge.c (thread_across_edge): Fix initialization + of 'found'. + 2013-09-08 Andi Kleen * tree-inline.c (estimate_num_insns): Limit asm cost to 1000. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 92eaeabd03e..756611dc80c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-09-08 Jeff Law + + * gcc.c-torture/compile/pr58340.c: New test. + 2013-09-08 Richard Sandiford * g++.dg/debug/ra1.C: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr58340.c b/gcc/testsuite/gcc.c-torture/compile/pr58340.c new file mode 100644 index 00000000000..ca3ccda0a47 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr58340.c @@ -0,0 +1,16 @@ +int a, b, c, d; + +int foo (int x, int y) +{ + return y == 0 ? x : 1 % y; +} + +int main () +{ + c = 0 || a; + + for (;;) + b = foo (d, c) && 1; + + return 0; +} diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c index afdd0afe6d6..f2051d7e7d0 100644 --- a/gcc/tree-ssa-threadedge.c +++ b/gcc/tree-ssa-threadedge.c @@ -978,7 +978,7 @@ thread_across_edge (gimple dummy_cond, { edge taken_edge; edge_iterator ei; - bool found = false; + bool found; bitmap visited = BITMAP_ALLOC (NULL); /* Look at each successor of E->dest to see if we can thread through it. */ @@ -994,6 +994,7 @@ thread_across_edge (gimple dummy_cond, of E->dest. */ path.safe_push (e); path.safe_push (taken_edge); + found = false; if ((e->flags & EDGE_DFS_BACK) == 0 || ! cond_arg_set_in_bb (path[path.length () - 1], e->dest)) found = thread_around_empty_blocks (taken_edge, -- 2.30.2