summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/20090331-1.c
blob: 2db2ee72ecb5302f989bab607cc55f22b6804f20 (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
struct re_pattern_buffer {
    unsigned char *buffer;
    unsigned long int allocated;
};
void byte_regex_compile (struct re_pattern_buffer *bufp,
			 unsigned char *begalt, unsigned char *b)
{
  unsigned char *pfrom;
  unsigned char *pto;

  while ((unsigned long) (b - bufp->buffer + 3) > bufp->allocated)
    {
      unsigned char *old_buffer = bufp->buffer;
      bufp->allocated <<= 1;
      if (old_buffer != bufp->buffer)
	{
	  int incr = bufp->buffer - old_buffer;
	  b += incr;
	}
    }
  pfrom = b;
  pto = b + 3;
  while (pfrom != begalt)
    *--pto = *--pfrom;
}