2 /* { dg-options "-O1 -fdump-tree-optimized" } */
12 const char* const foo1
= "hello world";
14 buffer1
= __builtin_malloc (SIZE
);
15 __builtin_strcpy (buffer1
, foo1
);
16 buffer2
= __builtin_malloc (SIZE
);
17 __builtin_strcpy (buffer2
, foo1
);
30 if (__builtin_memchr (foo1
, x
, 11))
32 if (__builtin_memchr (buffer1
, x
, zero
) != 0)
34 if (__builtin_memchr (foo1
, o
, 11) != foo1
+ 4)
36 if (__builtin_memchr (foo1
, w
, 2))
38 if (__builtin_memchr (foo1
+ 5, o
, 6) != foo1
+ 7)
40 if (__builtin_memchr (foo1
, d
, 11) != foo1
+ 10)
42 if (__builtin_memchr (foo1
, d
, 10))
44 if (__builtin_memchr (foo1
, null
, 11))
46 if (__builtin_memchr (foo1
, null
, 12) != foo1
+ 11)
49 __builtin_memchr (foo1
, x
, 11);
50 __builtin_memchr (buffer1
, x
, zero
);
51 __builtin_memchr (foo1
, w
, 2);
52 __builtin_memchr (foo1
, e
, 5);
54 /* MEMCHR with side effects. */
55 const char *const s1
= "hello world";
57 if (__builtin_memchr (++s2
, 'x', 0) != 0 || s2
!= s1
+1)
61 if (__builtin_memchr (s2
, ++c
, 0) != 0 || c
!= 'y')
64 const char *aaaaa
= "aaaaa";
65 const char *hello
= "hello";
66 const char *hello2
= "hello";
67 const char *empty
= "";
68 const char *ab
= "ab";
69 const char *ba
= "ba";
70 const char *aac
= "aac";
71 const char *aab
= "aab";
74 if (__builtin_strcmp (hello
, aaaaa
) <= 0)
76 if (__builtin_strcmp (aaaaa
, aaaaa
) != 0)
78 if (__builtin_strcmp (aaaaa
, empty
) <= 0)
80 if (__builtin_strcmp (empty
, aaaaa
) >= 0)
82 if (__builtin_strcmp (ab
, ba
) >= 0)
85 __builtin_strcmp (hello
, aaaaa
);
86 __builtin_strcmp (aaaaa
, aaaaa
);
87 __builtin_strcmp (aaaaa
, empty
);
88 __builtin_strcmp (empty
, aaaaa
);
89 __builtin_strcmp (ab
, ba
);
92 if (__builtin_strncmp (hello
, aaaaa
, zero
) != 0)
94 if (__builtin_strncmp (aaaaa
, aaaaa
, 100) != 0)
96 if (__builtin_strncmp (aaaaa
, empty
, 100) <= 0)
98 if (__builtin_strncmp (empty
, aaaaa
, 100) >= 0)
100 if (__builtin_strncmp (ab
, ba
, 1) >= 0)
102 if (__builtin_strncmp (aab
, aac
, 2) != 0)
104 if (__builtin_strncmp (buffer1
, buffer2
, 1) != 0)
105 __builtin_abort (); /* not folded away */
107 __builtin_strncmp (hello
, aaaaa
, zero
);
108 __builtin_strncmp (aaaaa
, aaaaa
, 100);
109 __builtin_strncmp (aaaaa
, empty
, 100);
110 __builtin_strncmp (empty
, aaaaa
, 100);
111 __builtin_strncmp (ab
, ba
, 1);
112 __builtin_strncmp (aab
, aac
, 2);
113 __builtin_strncmp (buffer1
, buffer2
, zero
);
114 __builtin_strncmp (buffer1
, buffer2
, one
);
115 __builtin_strncmp (empty
, buffer2
, 1);
116 __builtin_strncmp (buffer1
, empty
, 1);
119 const char *s3
= s1
+4;
120 if (__builtin_strncmp (++s2
, ++s3
+2, 0) != 0 || s2
!= s1
+1 || s3
!= s1
+5)
124 if (__builtin_strcasecmp (aaaaa
, aaaaa
) != 0)
126 if (__builtin_strcasecmp (aaaaa
, empty
) <= 0)
128 if (__builtin_strcasecmp (empty
, aaaaa
) >= 0)
132 if (__builtin_strncasecmp (hello
, aaaaa
, zero
) != 0)
134 if (__builtin_strncasecmp (aaaaa
, aaaaa
, 100) != 0)
136 if (__builtin_strncasecmp (aaaaa
, empty
, 100) <= 0)
138 if (__builtin_strncasecmp (empty
, aaaaa
, 100) >= 0)
140 if (__builtin_strncasecmp (aab
, aac
, 2) != 0)
142 if (__builtin_strncasecmp (ab
, ba
, 1) >= 0) /* not folded away */
143 __builtin_abort (); /* not folded away */
144 if (__builtin_strncasecmp (buffer1
, buffer2
, 1) != 0) /* not folded away */
145 __builtin_abort (); /* not folded away */
146 if (__builtin_strncasecmp (buffer1
, buffer2
, 100) != 0) /* not folded away */
147 __builtin_abort (); /* not folded away */
149 /* STRNCASECMP with side effects. */
152 if (__builtin_strncasecmp (++s2
, ++s3
+2, 0) != 0 || s2
!= s1
+1 || s3
!= s1
+5)
156 if (__builtin_memcmp (hello
, hello2
, 6) != 0)
162 /* { dg-final { scan-tree-dump-not "__builtin_strcmp" "optimized" } } */
163 /* { dg-final { scan-tree-dump-not "__builtin_strcasecmp" "optimized" } } */
164 /* { dg-final { scan-tree-dump-not "__builtin_strncmp" "optimized" } } */
165 /* { dg-final { scan-tree-dump-not "__builtin_memchr" "optimized" } } */
166 /* { dg-final { scan-tree-dump-not "__builtin_memcmp" "optimized" } } */
167 /* { dg-final { scan-tree-dump-times "__builtin_strncasecmp" 3 "optimized" } } */