1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
3 void bar (unsigned int);
4
5 void
foo(void)6 foo (void)
7 {
8 char buf[1] = { 3 };
9 const char *p = buf;
10 const char **q = &p;
11 unsigned int ch;
12 switch (**q)
13 {
14 case 1: ch = 5; break;
15 case 2: ch = 4; break;
16 case 3: ch = 3; break;
17 case 4: ch = 2; break;
18 case 5: ch = 1; break;
19 default: ch = 0; break;
20 }
21 bar (ch);
22 }
23 /* The switch should be switch converted and later constant propagated. */
24 /* { dg-final { scan-tree-dump-not "CSWTCH" "optimized"} } */
25 /* { dg-final { scan-tree-dump-not "switch" "optimized"} } */
26