re PR c++/71973 (c++ handles built-in functions inconsistently)
[gcc.git] / gcc / testsuite / g++.dg / tree-ssa / pr38572.C
1 // PR tree-optimization/38572
2 // { dg-do compile }
3 // { dg-options "-O2" }
4
5 // Crash caused by the out-of-bounds enum values (all the remaining cruft
6 // is needed only to trigger the appropriate code path in tree-vrp.c).
7 enum JSOp
8 {
9 JSOP_GETELEM = 5,
10 JSOP_LIMIT
11 };
12 extern void g ();
13 void f (char *pc, char *endpc, int format, char ***fp, enum JSOp op)
14 {
15 while (pc <= endpc)
16 {
17 if ((fp && *fp && pc == **fp) || pc == endpc)
18 {
19 if (format == 1)
20 op = (JSOp) 256;
21 else if (format == 2)
22 op = (JSOp) 257;
23 else
24 op = JSOP_GETELEM;
25 }
26 if (op >= JSOP_LIMIT)
27 {
28 if (format)
29 g ();
30 }
31 }
32 }