1 /* PR tree-optimization/80153 */
2 
3 void check (int, int, int) __attribute__((noinline));
check(int c,int c2,int val)4 void check (int c, int c2, int val)
5 {
6   if (!val) {
7     __builtin_abort();
8   }
9 }
10 
11 static const char *buf;
12 static int l, i;
13 
14 void _fputs(const char *str)  __attribute__((noinline));
_fputs(const char * str)15 void _fputs(const char *str)
16 {
17   buf = str;
18   i = 0;
19   l = __builtin_strlen(buf);
20 }
21 
22 char _fgetc() __attribute__((noinline));
_fgetc()23 char _fgetc()
24 {
25   char val = buf[i];
26   i++;
27   if (i > l)
28     return -1;
29   else
30     return val;
31 }
32 
33 static const char *string = "oops!\n";
34 
main(void)35 int main(void)
36 {
37   int i;
38   int c;
39 
40   _fputs(string);
41 
42   for (i = 0; i < __builtin_strlen(string); i++) {
43     c = _fgetc();
44     check(c, string[i], c == string[i]);
45   }
46 
47   return 0;
48 }
49