blob: c65b4bfc1a4c87d73cb253e106a1759a2777cdb5 [file] [log] [blame]
/* PR tree-optimization/83444
{ dg-do compile { target i?86-*-* x86_64-*-* } }
{ dg-options "-O2 -fdump-tree-optimized" } */
#include "strlenopt.h"
#define STR "1234567"
const char str[] = STR;
char dst[10];
void copy_from_global_str (void)
{
strcpy (dst, str);
if (strlen (dst) != sizeof str - 1)
abort ();
}
void copy_from_local_str (void)
{
const char s[] = STR;
strcpy (dst, s);
if (strlen (dst) != sizeof s - 1)
abort ();
}
void copy_from_local_memstr (void)
{
struct {
char s[sizeof STR];
} x = { STR };
strcpy (dst, x.s);
if (strlen (dst) != sizeof x.s - 1)
abort ();
}
void copy_to_local_str (void)
{
char d[sizeof STR];
strcpy (d, str);
if (strlen (d) != sizeof str - 1)
abort ();
}
void copy_to_local_memstr (void)
{
struct {
char d[sizeof STR];
} x;
strcpy (x.d, str);
if (strlen (x.d) != sizeof str- 1)
abort ();
}
/* Verify that all calls to strlen have been eliminated.
{ dg-final { scan-tree-dump-not "(abort|strlen) \\(\\)" "optimized" } } */