diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/20030324-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/20030324-1.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/20030324-1.c b/gcc/testsuite/gcc.dg/20030324-1.c new file mode 100644 index 000000000..67db669fd --- /dev/null +++ b/gcc/testsuite/gcc.dg/20030324-1.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O -fstrict-aliasing -fgcse" } */ + +/* PR optimization/10087 */ +/* Contributed by Peter van Hoof <p.van-hoof@qub.ac.uk> */ + +extern void abort(void); + +void b(int*,int*); + +typedef struct { + double T1; + char c; +} S; + +int main(void) +{ + int i,j; + double s; + + S x1[2][2]; + S *x[2] = { x1[0], x1[1] }; + S **E = x; + + for( i=0; i < 2; i++ ) + for( j=0; j < 2; j++ ) + E[j][i].T1 = 1; + + for( i=0; i < 2; i++ ) + for( j=0; j < 2; j++ ) + s = E[j][i].T1; + + b(&j,&i); + if (s != 1) + abort (); + return 0; +} + +void b(int *i, int *j) {} |