1/* Copyright (C) 2003 Free Software Foundation. 2 3 Test sprintf optimizations don't break anything and return the 4 correct results. 5 6 Written by Roger Sayle, June 22, 2003. */ 7 8static char buffer[32]; 9 10extern void abort (); 11typedef __SIZE_TYPE__ size_t; 12extern int sprintf(char*, const char*, ...); 13extern void *memset(void*, int, size_t); 14extern int memcmp(const void*, const void*, size_t); 15 16void test1() 17{ 18 sprintf(buffer,"foo"); 19} 20 21int test2() 22{ 23 return sprintf(buffer,"foo"); 24} 25 26void test3() 27{ 28 sprintf(buffer,"%s","bar"); 29} 30 31int test4() 32{ 33 return sprintf(buffer,"%s","bar"); 34} 35 36void test5(char *ptr) 37{ 38 sprintf(buffer,"%s",ptr); 39} 40 41 42void 43main_test (void) 44{ 45 memset (buffer, 'A', 32); 46 test1 (); 47 if (memcmp(buffer, "foo", 4) || buffer[4] != 'A') 48 abort (); 49 50 memset (buffer, 'A', 32); 51 if (test2 () != 3) 52 abort (); 53 if (memcmp(buffer, "foo", 4) || buffer[4] != 'A') 54 abort (); 55 56 memset (buffer, 'A', 32); 57 test3 (); 58 if (memcmp(buffer, "bar", 4) || buffer[4] != 'A') 59 abort (); 60 61 memset (buffer, 'A', 32); 62 if (test4 () != 3) 63 abort (); 64 if (memcmp(buffer, "bar", 4) || buffer[4] != 'A') 65 abort (); 66 67 memset (buffer, 'A', 32); 68 test5 ("barf"); 69 if (memcmp(buffer, "barf", 5) || buffer[5] != 'A') 70 abort (); 71} 72