mirror of
https://github.com/nArnoSNES/tcc-65816.git
synced 2024-06-12 13:29:29 +00:00
46 lines
763 B
C
46 lines
763 B
C
/* Copyright (C) 2003 Free Software Foundation.
|
|
|
|
Test strcpy optimizations don't evaluate side-effects twice.
|
|
|
|
Written by Jakub Jelinek, June 23, 2003. */
|
|
|
|
typedef __SIZE_TYPE__ size_t;
|
|
extern char *strcpy (char *, const char *);
|
|
extern int memcmp (const void *, const void *, size_t);
|
|
extern void abort (void);
|
|
extern void exit (int);
|
|
|
|
size_t
|
|
test1 (char *s, size_t i)
|
|
{
|
|
strcpy (s, "foobarbaz" + i++);
|
|
return i;
|
|
}
|
|
|
|
size_t
|
|
check2 (void)
|
|
{
|
|
static size_t r = 5;
|
|
if (r != 5)
|
|
abort ();
|
|
return ++r;
|
|
}
|
|
|
|
void
|
|
test2 (char *s)
|
|
{
|
|
strcpy (s, "foobarbaz" + check2 ());
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
char buf[10];
|
|
if (test1 (buf, 7) != 8 || memcmp (buf, "az", 3))
|
|
abort ();
|
|
test2 (buf);
|
|
if (memcmp (buf, "baz", 4))
|
|
abort ();
|
|
exit (0);
|
|
}
|