1 /* Copyright (C) 2003 Free Software Foundation.
3 Test sprintf optimizations don't break anything and return the
6 Written by Roger Sayle, June 22, 2003. */
8 static char buffer[32];
11 typedef __SIZE_TYPE__ size_t;
12 extern int sprintf(char*, const char*, ...);
13 extern void *memset(void*, int, size_t);
14 extern int memcmp(const void*, const void*, size_t);
18 sprintf(buffer,"foo");
23 return sprintf(buffer,"foo");
28 sprintf(buffer,"%s","bar");
33 return sprintf(buffer,"%s","bar");
38 sprintf(buffer,"%s",ptr);
44 memset (buffer, 'A', 32);
46 if (memcmp(buffer, "foo", 4) || buffer[4] != 'A')
49 memset (buffer, 'A', 32);
52 if (memcmp(buffer, "foo", 4) || buffer[4] != 'A')
55 memset (buffer, 'A', 32);
57 if (memcmp(buffer, "bar", 4) || buffer[4] != 'A')
60 memset (buffer, 'A', 32);
63 if (memcmp(buffer, "bar", 4) || buffer[4] != 'A')
66 memset (buffer, 'A', 32);
68 if (memcmp(buffer, "barf", 5) || buffer[5] != 'A')
75 /* When optimizing, all the above cases should be transformed into
76 something else. So any remaining calls to the original function
78 __attribute__ ((noinline))
80 sprintf (char *buf, const char *fmt, ...)