1 /* PR rtl-optimization/46315 */ 2 /* Reported by Magnus Granberg <zorry@gentoo.org> */ 3 4 /* { dg-do run } */ 5 /* { dg-options "-O2 -fno-strict-overflow" } */ 6 7 extern void abort (void); 8 9 static char const * parse_ranged(char const * s,int digits)10parse_ranged (char const *s, int digits) 11 { 12 int n = 0; 13 char const *lim = s + digits; 14 while (s < lim) 15 { 16 unsigned d = *s++ - '0'; 17 if (9 < d) 18 return 0; 19 n = 10 * n + d; 20 } 21 return s && 0 <= n && n <= 59 ? s : 0; 22 } 23 main(void)24int main(void) 25 { 26 const char *s = "10092240"; 27 28 s = parse_ranged (s, 2); 29 s = parse_ranged (s, 2); 30 s = parse_ranged (s, 2); 31 s = parse_ranged (s, 2); 32 33 if (!s || *s != '\0') 34 abort(); 35 36 return 0; 37 } 38