1 /* PR tree-optimization/89500 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
4 /* { dg-final { scan-tree-dump-times "return 10;" 2 "optimized" } } */
5 /* { dg-final { scan-tree-dump-times "return 5;" 1 "optimized" } } */
6 /* { dg-final { scan-tree-dump-times "return 0;" 2 "optimized" } } */
7 /* { dg-final { scan-tree-dump-times "strnlen " 1 "optimized" } } */
8
9 #include "strlenopt.h"
10
11 void foo (char *);
12
13 size_t
14 f1 (void)
15 {
16 char a[10] = "0123456789";
17 return strnlen (a, 10);
18 }
19
20 size_t
21 f2 (void)
22 {
23 char a[10] = "0123456789";
24 return strnlen (a, 5);
25 }
26
27 size_t
28 f3 (void)
29 {
30 char a[10] = "0123456789";
31 return strnlen (a, 0);
32 }
33
34 size_t
35 f4 (void)
36 {
37 char a[20];
38 foo (a);
39 memcpy (a, "0123456789", 10);
40 return strnlen (a, 10);
41 }
42
43 size_t
44 f5 (void)
45 {
46 char a[20];
47 foo (a);
48 memcpy (a, "0123456789", 10);
49 return strnlen (a, 14);
50 }
51
52 size_t
53 f6 (void)
54 {
55 char a[20];
56 foo (a);
57 return strnlen (a, 0);
58 }