PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / builtins / sprintf.c
blobb45926469f693d9070aa443ab9175c314ce61e75
1 /* Copyright (C) 2003 Free Software Foundation.
3 Test sprintf optimizations don't break anything and return the
4 correct results.
6 Written by Roger Sayle, June 22, 2003. */
8 static char buffer[32];
10 extern void abort ();
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);
16 void test1()
18 sprintf(buffer,"foo");
21 int test2()
23 return sprintf(buffer,"foo");
26 void test3()
28 sprintf(buffer,"%s","bar");
31 int test4()
33 return sprintf(buffer,"%s","bar");
36 void test5(char *ptr)
38 sprintf(buffer,"%s",ptr);
42 void
43 main_test (void)
45 memset (buffer, 'A', 32);
46 test1 ();
47 if (memcmp(buffer, "foo", 4) || buffer[4] != 'A')
48 abort ();
50 memset (buffer, 'A', 32);
51 if (test2 () != 3)
52 abort ();
53 if (memcmp(buffer, "foo", 4) || buffer[4] != 'A')
54 abort ();
56 memset (buffer, 'A', 32);
57 test3 ();
58 if (memcmp(buffer, "bar", 4) || buffer[4] != 'A')
59 abort ();
61 memset (buffer, 'A', 32);
62 if (test4 () != 3)
63 abort ();
64 if (memcmp(buffer, "bar", 4) || buffer[4] != 'A')
65 abort ();
67 memset (buffer, 'A', 32);
68 test5 ("barf");
69 if (memcmp(buffer, "barf", 5) || buffer[5] != 'A')
70 abort ();