From 91f074ced1fa309b50e019a8b3d4bb44d0774647 Mon Sep 17 00:00:00 2001
From: Richard Guenther <rguenther@suse.de>
Date: Tue, 10 Jan 2012 13:38:41 +0000
Subject: [PATCH] re PR tree-optimization/51801 (ICE in inline_small_functions)

2012-01-10  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/51801
	* gcc.dg/torture/pr51801.c: New testcase.

From-SVN: r183064
---
 gcc/testsuite/ChangeLog                |  5 +++
 gcc/testsuite/gcc.dg/torture/pr51801.c | 62 ++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)
 create mode 100644 gcc/testsuite/gcc.dg/torture/pr51801.c

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1eccbaa7c17e..f05d3e5182db 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-10  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/51801
+	* gcc.dg/torture/pr51801.c: New testcase.
+
 2012-01-10  Tobias Burnus  <burnus@net-b.de>
 
 	PR fortran/51652
diff --git a/gcc/testsuite/gcc.dg/torture/pr51801.c b/gcc/testsuite/gcc.dg/torture/pr51801.c
new file mode 100644
index 000000000000..c36cee306fb0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr51801.c
@@ -0,0 +1,62 @@
+/* { dg-do compile } */
+
+typedef struct { char Vshow; } TScreen;
+typedef struct _Misc { char Tshow; } Misc;
+typedef struct _XtermWidgetRec { TScreen screen; Misc misc; } XtermWidgetRec, *XtermWidget;
+extern XtermWidget term;
+
+void
+handle_tekshow (void *gw, int allowswitch)
+{
+  XtermWidget xw = term;
+  if (!((xw)->misc.Tshow))
+    set_tek_visibility (1);
+}
+
+void
+do_tekonoff (void *gw, void *closure, void *data)
+{
+  handle_tekshow (gw, 0);
+}
+
+void
+do_vtonoff (void *gw, void *closure, void *data)
+{
+}
+
+void
+handle_toggle (void (*proc) (void *gw, void *closure, void *data),
+	       int var, char **params, unsigned int nparams, void *w,
+	       void *closure, void *data)
+{
+  XtermWidget xw = term;
+  int dir = -2;
+  switch (nparams)
+    {
+    case 0:
+      dir = -1;
+    }
+  switch (dir)
+    {
+    case 1:
+      (*proc) (w, closure, data);
+      Bell (xw, 2, 0);
+    }
+}
+
+void
+HandleVisibility (void *w, char **params, unsigned int *param_count)
+{
+  XtermWidget xw = term;
+  if (*param_count == 2)
+    switch (params[0][0])
+      {
+      case 'v':
+	handle_toggle (do_vtonoff, (int) ((int) (&(xw)->screen)->Vshow),
+		       params + 1, (*param_count) - 1, w, (void *) 0,
+		       (void *) 0);
+	handle_toggle (do_tekonoff, (int) ((int) ((xw)->misc.Tshow)),
+		       params + 1, (*param_count) - 1, w, (void *) 0,
+		       (void *) 0);
+      }
+}
-- 
GitLab