diff options
author | Richard Biener <rguenther@suse.de> | 2014-07-14 11:22:34 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-07-14 11:22:34 +0000 |
commit | 888a1049c2561ccad90da753ab9234b10052eee7 (patch) | |
tree | 66c3d891e38d4c18a90d6eea67408dce71b0af65 | |
parent | 3b57ff81e6246551d6eb563ff2981027db9e6205 (diff) | |
download | gcc-888a1049c2561ccad90da753ab9234b10052eee7.zip gcc-888a1049c2561ccad90da753ab9234b10052eee7.tar.gz gcc-888a1049c2561ccad90da753ab9234b10052eee7.tar.bz2 |
re PR lto/61786 (wrong code by LTO on x86_64-linux-gnu)
2014-07-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/61786
* gcc.dg/torture/pr61786.c: New testcase.
* gcc.dg/lto/pr61786_0.c: Likewise.
* gcc.dg/lto/pr61786_1.c: Likewise.
From-SVN: r212515
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/pr61786_0.c | 27 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/pr61786_1.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr61786.c | 31 |
4 files changed, 73 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a2529fc..a6483a6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2014-07-14 Richard Biener <rguenther@suse.de> + PR tree-optimization/61786 + * gcc.dg/torture/pr61786.c: New testcase. + * gcc.dg/lto/pr61786_0.c: Likewise. + * gcc.dg/lto/pr61786_1.c: Likewise. + +2014-07-14 Richard Biener <rguenther@suse.de> + PR tree-optimization/61757 PR tree-optimization/61783 PR tree-optimization/61787 diff --git a/gcc/testsuite/gcc.dg/lto/pr61786_0.c b/gcc/testsuite/gcc.dg/lto/pr61786_0.c new file mode 100644 index 0000000..442b5b2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr61786_0.c @@ -0,0 +1,27 @@ +/* { dg-lto-do run } */ +/* { dg-lto-options { { -flto } } } */ +/* { dg-extra-ld-options "-O" } */ + +int a, *c = &a, d; +char b = 1; + +void +fn1 (void) +{ + d = 1; +lbl: + if (b == d) + { + d = *c; + if (b) + goto lbl; + } +} + +int +fn2 (void) +{ + fn1 (); + return 0; +} + diff --git a/gcc/testsuite/gcc.dg/lto/pr61786_1.c b/gcc/testsuite/gcc.dg/lto/pr61786_1.c new file mode 100644 index 0000000..4cfd0aa --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr61786_1.c @@ -0,0 +1,8 @@ +int fn2 (void); + +int +main () +{ + fn2 (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr61786.c b/gcc/testsuite/gcc.dg/torture/pr61786.c new file mode 100644 index 0000000..1e32a82 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr61786.c @@ -0,0 +1,31 @@ +/* { dg-do run } */ + +int a, *c = &a, d; +char b = 1; + +void +fn1 () +{ + d = 1; +lbl: + if (b == d) + { + d = *c; + if (b) + goto lbl; + } +} + +int +fn2 () +{ + fn1 (); + return 0; +} + +int +main () +{ + fn2 (); + return 0; +} |