2018-05-15 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / graphite / id-pr43464.c
blobb9cf7c89d8710f86d2c129fc869401ccabfbd935
1 typedef struct sv SV;
2 typedef struct regnode
4 char flags;
5 } regnode;
6 typedef struct regexp
8 } regexp;
9 typedef struct cop
11 SV *cop_warnings;
12 } COP;
13 extern const unsigned char PL_utf8skip[];
14 extern char PL_dowarn;
15 extern COP *volatile PL_curcop;
16 int S_reginclass (regnode *);
17 int S_regtry (regexp *, char *);
18 unsigned long Perl_utf8n_to_uvuni (char *, int, long unsigned int *, int);
19 char *
20 S_find_byclass (regexp * prog, regnode * c, char *s, char *strend,
21 char *startpos, int norun)
23 register long unsigned int uskip;
24 char *e;
25 switch (((c)->flags))
27 case 17:
29 while (s + (uskip = PL_utf8skip[*s]) <= strend)
31 if (c->flags || S_reginclass (c))
32 if (norun || S_regtry (prog, s))
33 goto got_it;
34 s += uskip;
36 unsigned long c, f;
37 long unsigned int len;
39 while (s <= e)
41 c = Perl_utf8n_to_uvuni (s, 13, &len,
42 (((PL_curcop->cop_warnings !=
43 ((SV *) ((void *) 0)))
44 && PL_dowarn)) ? 0 : 0x00FF);
45 if (c == 0 && (norun || S_regtry (prog, s)))
46 if (f != c && (norun || S_regtry (prog, s)))
47 goto got_it;
52 got_it:
53 return s;
55 void
56 Perl_re_intuit_start (regexp * prog)
58 S_find_byclass (prog, 0, 0, 0, 0, 1);
60 void
61 Perl_regexec_flags (register regexp * prog,
62 register char *strend)
64 S_find_byclass (prog, 0, 0, strend, 0, 0);
66 int
67 S_regtry (regexp * prog, char *startpos)