From b5f5f2fd3737238c418bb8982470f7961b8be277 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Fri, 27 Apr 2012 06:28:49 +0000 Subject: [PATCH] re PR tree-optimization/51879 (Missed tail merging with non-const/pure calls) 2012-04-27 Tom de Vries PR tree-optimization/51879 * gcc.dg/pr51879.c: New test. * gcc.dg/pr51879-2.c: Same. * gcc.dg/pr51879-3.c: Same. * gcc.dg/pr51879-4.c: Same. * gcc.dg/pr51879-6.c: Same. From-SVN: r186895 --- gcc/testsuite/ChangeLog | 9 +++++++++ gcc/testsuite/gcc.dg/pr51879-2.c | 19 +++++++++++++++++++ gcc/testsuite/gcc.dg/pr51879-3.c | 19 +++++++++++++++++++ gcc/testsuite/gcc.dg/pr51879-4.c | 16 ++++++++++++++++ gcc/testsuite/gcc.dg/pr51879-6.c | 27 +++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/pr51879.c | 19 +++++++++++++++++++ 6 files changed, 109 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr51879-2.c create mode 100644 gcc/testsuite/gcc.dg/pr51879-3.c create mode 100644 gcc/testsuite/gcc.dg/pr51879-4.c create mode 100644 gcc/testsuite/gcc.dg/pr51879-6.c create mode 100644 gcc/testsuite/gcc.dg/pr51879.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 576c4aa17f0..7643b5aa87a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-04-27 Tom de Vries + + PR tree-optimization/51879 + * gcc.dg/pr51879.c: New test. + * gcc.dg/pr51879-2.c: Same. + * gcc.dg/pr51879-3.c: Same. + * gcc.dg/pr51879-4.c: Same. + * gcc.dg/pr51879-6.c: Same. + 2012-04-26 Paolo Carlini PR c++/53096 diff --git a/gcc/testsuite/gcc.dg/pr51879-2.c b/gcc/testsuite/gcc.dg/pr51879-2.c new file mode 100644 index 00000000000..db385cba4a5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-2.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +void +foo (int y) +{ + int a; + if (y) + baz (bar (7) + 6); + else + baz (bar (7) + 6); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { scan-tree-dump-times "baz \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879-3.c b/gcc/testsuite/gcc.dg/pr51879-3.c new file mode 100644 index 00000000000..be4b3743228 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-3.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +void +foo (int y) +{ + int a; + if (y == 6) + a = bar (7) + 6; + else + a = bar (7) + 6; + baz (a); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879-4.c b/gcc/testsuite/gcc.dg/pr51879-4.c new file mode 100644 index 00000000000..5cb47afdb5d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-4.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +int foo (int y) +{ + int a, b; + a = bar (7) + 6; + b = bar (7) + 6; + return a + b; +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 2 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879-6.c b/gcc/testsuite/gcc.dg/pr51879-6.c new file mode 100644 index 00000000000..8362a170018 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-6.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + + +int bar (int); +void baz (int); +void bla (int); + +void +foo (int y) +{ + int a; + if (y == 6) + { + bla (5); + a = bar (7); + } + else + { + bla (5); + a = bar (7); + } + baz (a); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879.c b/gcc/testsuite/gcc.dg/pr51879.c new file mode 100644 index 00000000000..060624fd679 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +void +foo (int y) +{ + int a; + if (y == 6) + a = bar (7); + else + a = bar (7); + baz (a); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ -- 2.30.2