diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20020418-1.c | 24 |
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3fb38ec..6bb6b22 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-04-18 David S. Miller <davem@redhat.com> + + * gcc.c-torture/execute/20020418-1.c: New test. + 2002-04-17 Jakub Jelinek <jakub@redhat.com> * gcc.dg/20020416-1.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/execute/20020418-1.c b/gcc/testsuite/gcc.c-torture/execute/20020418-1.c new file mode 100644 index 0000000..953f96e --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20020418-1.c @@ -0,0 +1,24 @@ +/* ifcvt accidently deletes a referenced label while generating + conditional traps on machines having such patterns */ + +struct foo { int a; }; + +void gcc_crash(struct foo *p) +{ + if (__builtin_expect(p->a < 52, 0)) + __builtin_trap(); + top: + p->a++; + if (p->a >= 62) + goto top; +} + +int main(void) +{ + struct foo x; + + x.a = 53; + gcc_crash(&x); + + exit (0); +} |
