diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/graphite/pr38500.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/pr38500.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38500.c b/gcc/testsuite/gcc.dg/graphite/pr38500.c new file mode 100644 index 000000000..f5292d173 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr38500.c @@ -0,0 +1,29 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +typedef unsigned char U8; +extern char test1; + +char *Perl_screaminstr (int, int, int); + +void +Perl_re_intuit_start( int minlen, char *strend, unsigned int flags, int i) +{ + register int start_shift = 0; + register int end_shift = 0; + register char *s; + char *strbeg; + char *t; + if(i > 0) + goto success_at_start; + int end = 0; + int eshift = (test1 ? Perl_utf8_distance((U8*)strend,(U8*)s) : (U8*)strend - (U8*)s) - end; + if (end_shift < eshift) + end_shift = eshift; + restart: + s = Perl_screaminstr(start_shift + (s - strbeg), end_shift, 0); + while( t < strend - minlen){ + } + success_at_start: + eshift = (test1 ? Perl_utf8_distance((U8*)strend,(U8*)s) : (U8*)strend - (U8*)s) - end; + goto restart; +} |