diff options
author | Richard Guenther <rguenther@suse.de> | 2012-01-10 13:38:41 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-01-10 13:38:41 +0000 |
commit | 91f074ced1fa309b50e019a8b3d4bb44d0774647 (patch) | |
tree | 06eafebdf2fa101fc38662d38822c1f5a683fe51 /gcc | |
parent | 0f24748c58ce2417596a15cb09db935a45da85fb (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr51801.c | 62 |
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); + } +} |