20041214-1.c: New test.
* gcc.c-torture/execute/20041214-1.c: New test. Actually commit 20041213-2.c (pr18694). From-SVN: r92160
This commit is contained in:
parent
da708cc6f5
commit
c31d515429
|
@ -1,3 +1,7 @@
|
|||
2004-12-14 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
* gcc.c-torture/20041214-1.c: New test.
|
||||
|
||||
2004-12-14 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR c++/18965
|
||||
|
@ -31,7 +35,7 @@
|
|||
|
||||
2004-12-13 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* gcc.c-torture/execute/20041213-1.c: New test.
|
||||
* gcc.c-torture/execute/20041213-2.c: New test.
|
||||
|
||||
2004-12-13 Richard Henderson <rth@redhat.com>
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/* PR tree-optimization/18694
|
||||
|
||||
The dominator optimization didn't take the PHI evaluation order
|
||||
into account when threading an edge. */
|
||||
|
||||
extern void abort (void) __attribute__((noreturn));
|
||||
extern void exit (int) __attribute__((noreturn));
|
||||
|
||||
void __attribute__((noinline))
|
||||
foo (int i)
|
||||
{
|
||||
int next_n = 1;
|
||||
int j = 0;
|
||||
|
||||
for (; i != 0; i--)
|
||||
{
|
||||
int n;
|
||||
|
||||
for (n = next_n; j < n; j++)
|
||||
next_n++;
|
||||
|
||||
if (j != n)
|
||||
abort ();
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
foo (2);
|
||||
exit (0);
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
typedef long unsigned int size_t;
|
||||
extern void abort (void);
|
||||
extern char *strcpy (char *, const char *);
|
||||
extern int strcmp (const char *, const char *);
|
||||
typedef __builtin_va_list va_list;
|
||||
static const char null[] = "(null)";
|
||||
int g (char *s, const char *format, va_list ap)
|
||||
{
|
||||
const char *f;
|
||||
const char *string;
|
||||
char spec;
|
||||
static const void *step0_jumps[] = {
|
||||
&&do_precision,
|
||||
&&do_form_integer,
|
||||
&&do_form_string,
|
||||
};
|
||||
f = format;
|
||||
if (*f == '\0')
|
||||
goto all_done;
|
||||
do
|
||||
{
|
||||
spec = (*++f);
|
||||
goto *(step0_jumps[2]);
|
||||
|
||||
/* begin switch table. */
|
||||
do_precision:
|
||||
++f;
|
||||
__builtin_va_arg (ap, int);
|
||||
spec = *f;
|
||||
goto *(step0_jumps[2]);
|
||||
|
||||
do_form_integer:
|
||||
__builtin_va_arg (ap, unsigned long int);
|
||||
goto end;
|
||||
|
||||
do_form_string:
|
||||
string = __builtin_va_arg (ap, const char *);
|
||||
strcpy (s, string);
|
||||
|
||||
/* End of switch table. */
|
||||
end:
|
||||
++f;
|
||||
}
|
||||
while (*f != '\0');
|
||||
|
||||
all_done:
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
f (char *s, const char *f, ...)
|
||||
{
|
||||
va_list ap;
|
||||
__builtin_va_start (ap, f);
|
||||
g (s, f, ap);
|
||||
__builtin_va_end (ap);
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
char buf[10];
|
||||
f (buf, "%s", "asdf", 0);
|
||||
if (strcmp (buf, "asdf"))
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue