summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/20020323-1.c
blob: ed3c66651d9ffa3a162c14947f07d9dcdf39e6ef (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
/* This testcase caused ICE on powerpc at -O3, because regrename did
   not handle match_dup of match_operator if the RTLs were not shared.  */

struct A
{
  unsigned char *a0, *a1;
  int a2;
};

void bar (struct A *);

unsigned int
foo (int x)
{
  struct A a;
  unsigned int b;

  if (x < -128 || x > 255 || x == -1)
    return 26;

  a.a0 = (unsigned char *) &b;
  a.a1 = a.a0 + sizeof (unsigned int);
  a.a2 = 0;
  bar (&a);
  return b;
}