aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-01-10 13:38:41 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-01-10 13:38:41 +0000
commit91f074ced1fa309b50e019a8b3d4bb44d0774647 (patch)
tree06eafebdf2fa101fc38662d38822c1f5a683fe51
parent0f24748c58ce2417596a15cb09db935a45da85fb (diff)
downloadgcc-91f074ced1fa309b50e019a8b3d4bb44d0774647.zip
gcc-91f074ced1fa309b50e019a8b3d4bb44d0774647.tar.gz
gcc-91f074ced1fa309b50e019a8b3d4bb44d0774647.tar.bz2
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
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr51801.c62
2 files changed, 67 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1eccbaa..f05d3e5 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 0000000..c36cee3
--- /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);
+ }
+}