summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/20060904-1.c
blob: f9f768664857176462756dbf1ad36fc7685bada8 (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
/* PR rtl-optimization/27616 */
/* Reported by Lee Ji Hwan <moonz@kaist.ac.kr> */
/* Testcase by Andrew Pinski <pinskia@gcc.gnu.org> */

struct chunk_s
{
  unsigned int size;
  int offset_next;
};

typedef struct chunk_s chunk_t;

void foo(chunk_t *first)
{
  chunk_t *cur;
  char *first0;

  do {
    first0 = (char *) first;
    cur = (chunk_t *) (first0 + first->offset_next);
    if ((chunk_t *) (first0 + cur->offset_next) != first)
      return ;

    first->offset_next = 0;

  } while (cur->size != 0);
}