summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-25 12:54:56 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-25 12:54:56 +0000
commitd5459a15c163d374eb5e3ec080967dfcbeda9790 (patch)
treefa0165b9a6a62351e59b8ce797a10ff937f85616 /gcc/testsuite
parentfeba4360fc0d99f62b60b9377dc81734e98d4dac (diff)
downloadgcc-d5459a15c163d374eb5e3ec080967dfcbeda9790.tar.gz
2013-03-25 Richard Biener <rguenther@suse.de>
PR tree-optimization/56689 * tree-vrp.c (execute_vrp): Mark loops for fixup if we removed any edge. * gcc.dg/torture/pr56689.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197039 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr56689.c46
2 files changed, 51 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0a389fc18ef..2aad75a8e34 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-03-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56689
+ * gcc.dg/torture/pr56689.c: New testcase.
+
2013-03-25 Kai Tietz <ktietz@redhat.com>
* g++.dg/torture/20121105-1.C: Adjust for LLP64 targets.
diff --git a/gcc/testsuite/gcc.dg/torture/pr56689.c b/gcc/testsuite/gcc.dg/torture/pr56689.c
new file mode 100644
index 00000000000..719f528c2c0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr56689.c
@@ -0,0 +1,46 @@
+/* { dg-do compile } */
+
+extern int baz ();
+extern void bar (void);
+extern void noret (void) __attribute__ ((__noreturn__));
+
+void
+fix_register (const char *name, int fixed, int call_used, int nregs)
+{
+ int i;
+ int reg;
+
+ if ((reg = baz ()) >= 0)
+ {
+ for (i = reg; i < nregs; i++)
+ {
+ if ((i == 15 || i == 11) && (fixed == 0 || call_used == 0))
+ {
+ switch (fixed)
+ {
+ case 0:
+ switch (call_used)
+ {
+ case 1:
+ bar ();
+ break;
+ default:
+ (noret ());
+ }
+ case 1:
+ switch (call_used)
+ {
+ case 1:
+ break;
+ case 0:
+ default:
+ (noret ());
+ }
+ break;
+ default:
+ (noret ());
+ }
+ }
+ }
+ }
+}