From 9f284938e92652babe878db72e81ab9b0787bfd9 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 10 Jan 2012 13:38:41 +0000 Subject: [PATCH] 2012-01-10 Richard Guenther PR tree-optimization/51801 * gcc.dg/torture/pr51801.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183064 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 1eccbaa7c17..f05d3e5182d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-01-10 Richard Guenther + + PR tree-optimization/51801 + * gcc.dg/torture/pr51801.c: New testcase. + 2012-01-10 Tobias Burnus 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 00000000000..c36cee306fb --- /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); + } +} -- 2.11.0