1 /* PR tree-optimization/80153 */ 2 3 void check (int, int, int) __attribute__((noinline)); check(int c,int c2,int val)4void 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)15void _fputs(const char *str) 16 { 17 buf = str; 18 i = 0; 19 l = __builtin_strlen(buf); 20 } 21 22 char _fgetc() __attribute__((noinline)); _fgetc()23char _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)35int 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