Viewing file: strlenopt-39.c (1.02 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* 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" } } */
|