blob: 76a351bfb6b86207515bcb24ba9347aa6b9f48c6 [file] [log] [blame]
/* 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);
}