phiopt: Fix VCE moving by rewriting it into cast [PR116098]
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 920726-1.c
blob42a2cff96df68c7e75d5c3f2f89376a85867c961
1 #include <stdio.h>
2 #include <stdarg.h>
4 void abort (void);
5 void exit (int);
7 struct spurious
9 int anumber;
12 int first(char *buf, char *fmt, ...)
14 int pos, number;
15 va_list args;
16 int dummy;
17 char *bp = buf;
19 va_start(args, fmt);
20 for (pos = 0; fmt[pos]; pos++)
21 if (fmt[pos] == 'i')
23 number = va_arg(args, int);
24 sprintf(bp, "%d", number);
25 bp += __builtin_strlen(bp);
27 else
28 *bp++ = fmt[pos];
30 va_end(args);
31 *bp = 0;
32 return dummy;
35 struct spurious second(char *buf,char *fmt, ...)
37 int pos, number;
38 va_list args;
39 struct spurious dummy;
40 char *bp = buf;
42 va_start(args, fmt);
43 for (pos = 0; fmt[pos]; pos++)
44 if (fmt[pos] == 'i')
46 number = va_arg(args, int);
47 sprintf(bp, "%d", number);
48 bp += __builtin_strlen(bp);
50 else
51 *bp++ = fmt[pos];
53 va_end(args);
54 *bp = 0;
55 return dummy;
58 int
59 main(void)
61 char buf1[100], buf2[100];
62 first(buf1, "i i ", 5, 20);
63 second(buf2, "i i ", 5, 20);
64 if (__builtin_strcmp ("5 20 ", buf1) || __builtin_strcmp ("5 20 ", buf2))
65 abort();
66 exit(0);