diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/920501-3.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/920501-3.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/920501-3.c b/gcc/testsuite/gcc.c-torture/execute/920501-3.c new file mode 100644 index 000000000..1031d7378 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/920501-3.c @@ -0,0 +1,35 @@ +int tab[9]; +execute(oip, ip) + unsigned short *oip, *ip; +{ +#ifndef NO_LABEL_VALUES + int x = 0; + int *xp = tab; +base: + x++; + if (x == 4) + { + *xp = 0; + return; + } + *xp++ = ip - oip; + goto *(&&base + *ip++); +#else + tab[0] = 0; + tab[1] = 1; + tab[2] = 2; + tab[3] = 0; +#endif +} + +main() +{ + unsigned short ip[10]; + int i; + for (i = 0; i < 10; i++) + ip[i] = 0; + execute(ip, ip); + if (tab[0] != 0 || tab[1] != 1 || tab[2] != 2 || tab[3] != 0) + abort(); + exit(0); +} |