summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture/pr29584.c
blob: 4cb51d275690f2fdfe7b0cc2f05465ab4c93d3c1 (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
/* PR middle-end/29584 */
/* { dg-do compile { target { ilp32 || lp64 } } } */

extern void *foo1 (void);
extern void foo2 (void);
extern void foo3 (void *, void *);
extern int foo4 (void);

void
bar (void)
{
  int i;
  void *s;
  for (i = 1; i < 4; i++)
    {
      if (foo4 ())
	foo2 ();
      switch (0x8000000UL + i * 0x400)
	{
	case 0x80000000UL ... 0x80000000UL + 0x3a000000UL - 1:
	  s = 0;
	  break;
	default:
	  s = foo1 ();
	}
      foo3 ((void *) (0x8000000UL + i * 0x400), s);
    }
}