1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fsplit-paths -fdump-tree-split-paths-details -w" } */
3 
4 const extern signed char *__ctype_ptr__;
5 typedef unsigned char uchar;
6 static int patlen;
7 static int skip[(0x7f * 2 + 1) + 1];
8 static uchar *pat = ((void *) 0);
9 void
bmhi_init(const signed char * pattern)10 bmhi_init (const signed char *pattern)
11 {
12   int i, lastpatchar;
13   patlen = __builtin_strlen (pattern);
14   for (i = 0; i < patlen; i++)
15     pat[i] = (
16 	       {
17 	       __typeof__ (pattern[i]) __x = (pattern[i]);
18 	       ((((__ctype_ptr__ +
19 		   sizeof (""[__x]))[(int) (__x)]) & (01 | 02))
20 		== 02) ? (int) __x - 'a' + 'A' : (int) __x;
21 	       });
22   for (i = 0; i < patlen - 1; ++i)
23     {
24       skip[(
25 	     {
26 	     __typeof__ (pat[i]) __x = (pat[i]);
27 	     ((((__ctype_ptr__ +
28 		 sizeof (""[__x]))[(int) (__x)]) & (01 | 02)) ==
29 	      01) ? (int) __x - 'A' + 'a' : (int) __x;
30 	     })] = patlen - i - 1;
31     }
32   skip[(
33 	 {
34 	 __typeof__ (lastpatchar) __x = (lastpatchar);
35 	 ((((__ctype_ptr__ +
36 	     sizeof (""[__x]))[(int) (__x)]) & (01 | 02)) ==
37 	  01) ? (int) __x - 'A' + 'a' : (int) __x;
38 	 })] = 32767;
39   for (i = 0; i < patlen - 1; ++i)
40     {
41     }
42 }
43 
44 /* { dg-final { scan-tree-dump-times "join point for if-convertable half-diamond" 1 "split-paths" } } */
45