annotate gcc/testsuite/gcc.dg/strcmpopt_2.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-do run } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-options "-O2 -fdump-tree-strlen" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 char s[100] = {'a','b','c','d'};
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 typedef struct { char s[8]; int x; } S;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 f1 (S *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 return __builtin_strcmp (s->s, "abc") != 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 f2 (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 return __builtin_strcmp (s, "abc") != 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 f3 (S *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 return __builtin_strcmp ("abc", s->s) != 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 f4 (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 return __builtin_strcmp ("abc", s) != 0;
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 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 f5 (S *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 return __builtin_strncmp (s->s, "abc", 3) != 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 f6 (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 return __builtin_strncmp (s, "abc", 2) != 0;
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 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 f7 (S *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 return __builtin_strncmp ("abc", s->s, 3) != 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 __attribute__ ((noinline)) int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 f8 (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 return __builtin_strncmp ("abc", s, 2) != 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 int main (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 S ss = {{'a','b','c'}, 2};
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 if (f1 (&ss) != 0 || f2 () != 1 || f3 (&ss) != 0 ||
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 f4 () != 1 || f5 (&ss) != 0 || f6 () != 0 ||
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 f7 (&ss) != 0 || f8 () != 0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 /* { dg-final { scan-tree-dump-times "cmp_eq \\(" 8 "strlen" } } */