modula2: M2MetaError.{def,mod} and P2SymBuild.mod further cleanup
[official-gcc.git] / gcc / testsuite / gcc.dg / strlenopt-67.c
blobe1b1de27d9e860b27903dc3210130d2596378bed
1 /* PR tree-optimization/90989 - incorrrect strlen result after second strcpy
2 into the same destination.
3 { dg-do compile }
4 { dg-options "-O2 -Wall -fdump-tree-optimized" } */
6 // #include "strlenopt.h"
8 char a[4];
10 int f4 (void)
12 char b[4];
13 __builtin_strcpy (b, "12");
15 int i = __builtin_strcmp (a, b);
17 __builtin_strcpy (b, "123");
18 if (__builtin_strlen (b) != 3)
19 __builtin_abort ();
21 return i;
24 int f6 (void)
26 char b[6];
27 __builtin_strcpy (b, "1234");
29 int i = __builtin_strcmp (a, b);
31 __builtin_strcpy (b, "12345");
32 if (__builtin_strlen (b) != 5)
33 __builtin_abort ();
35 return i;
38 int f8 (void)
40 char b[8];
41 __builtin_strcpy (b, "1234");
43 int i = __builtin_strcmp (a, b);
45 __builtin_strcpy (b, "1234567");
46 if (__builtin_strlen (b) != 7)
47 __builtin_abort ();
49 return i;
52 /* { dg-final { scan-tree-dump-times "abort|strlen" 0 "optimized" } } */