1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
3 /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */
4 /* { dg-final { scan-tree-dump-not "__builtin_strstr" "optimized" } } */
5 /* { dg-final { scan-tree-dump-times "return p_\[0-9]*.D.;" 1 "optimized" } } */
6 /* { dg-final { scan-tree-dump-times "__builtin_strchr" 1 "optimized" } } */
7
8 extern void link_error (void);
9
10 void
11 foo (void)
12 {
13 const char *p = "abcdef";
14 const char *q = "def";
15 p++;
16 q++;
17 if (__builtin_strstr (p, q) != p + 3)
18 link_error ();
19 }
20
21 char *
22 bar (const char *p)
23 {
24 return __builtin_strstr (p, "");
25 }
26
27 char *
28 baz (const char *p)
29 {
30 return __builtin_strstr (p, "d");
31 }