/* 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); }