annotate gcc/testsuite/gcc.dg/strlenopt-39.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR tree-optimization/83444
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 { dg-do compile { target i?86-*-* x86_64-*-* } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 { dg-options "-O2 -fdump-tree-optimized" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 #include "strlenopt.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 #define STR "1234567"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 const char str[] = STR;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 char dst[10];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 void copy_from_global_str (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 strcpy (dst, str);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 if (strlen (dst) != sizeof str - 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 void copy_from_local_str (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 const char s[] = STR;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 strcpy (dst, s);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 if (strlen (dst) != sizeof s - 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 void copy_from_local_memstr (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 struct {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 char s[sizeof STR];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 } x = { STR };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 strcpy (dst, x.s);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 if (strlen (dst) != sizeof x.s - 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 void copy_to_local_str (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 char d[sizeof STR];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 strcpy (d, str);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 if (strlen (d) != sizeof str - 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 void copy_to_local_memstr (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 struct {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 char d[sizeof STR];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 } x;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 strcpy (x.d, str);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 if (strlen (x.d) != sizeof str- 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 /* Verify that all calls to strlen have been eliminated.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 { dg-final { scan-tree-dump-not "(abort|strlen) \\(\\)" "optimized" } } */