summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/20030324-1.c
blob: 67db669fda282c0df56f52b954a6f4c2051ed115 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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) {}