annotate gcc/testsuite/gcc.dg/20050503-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR middle-end/21265
kono
parents:
diff changeset
2 Test whether tail call information is propagated through builtin
kono
parents:
diff changeset
3 expanders. */
kono
parents:
diff changeset
4 /* { dg-do compile } */
kono
parents:
diff changeset
5 /* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ia32 && { ! nonpic } } } } */
kono
parents:
diff changeset
6 /* { dg-options "-O2" } */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 typedef __SIZE_TYPE__ size_t;
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 #define F(n, rettype, name, args, callargs) \
kono
parents:
diff changeset
11 extern rettype name args; \
kono
parents:
diff changeset
12 rettype test##n args \
kono
parents:
diff changeset
13 { \
kono
parents:
diff changeset
14 return name callargs; \
kono
parents:
diff changeset
15 }
kono
parents:
diff changeset
16 #define F1(n, rettype, name, t1, callargs) \
kono
parents:
diff changeset
17 F (n, rettype, name, (t1 a1), callargs)
kono
parents:
diff changeset
18 #define F2(n, rettype, name, t1, t2, callargs) \
kono
parents:
diff changeset
19 F (n, rettype, name, (t1 a1, t2 a2), callargs)
kono
parents:
diff changeset
20 #define F3(n, rettype, name, t1, t2, t3, callargs) \
kono
parents:
diff changeset
21 F (n, rettype, name, (t1 a1, t2 a2, t3 a3), callargs)
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 F3 (1a, void *, memcpy, void *, const void *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
24 F3 (1b, void *, memcpy, void *, const void *, size_t, (a1, a2, 10))
kono
parents:
diff changeset
25 F3 (2a, void *, mempcpy, void *, const void *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
26 F3 (2b, void *, mempcpy, void *, const void *, size_t, (a1, a2, 10))
kono
parents:
diff changeset
27 F3 (3a, void *, memmove, void *, const void *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
28 F3 (3b, void *, memmove, void *, const void *, size_t, (a1, "abcdefghijklmno", a3))
kono
parents:
diff changeset
29 F3 (4a, void *, memset, void *, int, size_t, (a1, a2, a3))
kono
parents:
diff changeset
30 F3 (4b, void *, memset, void *, int, size_t, (a1, a2, 156))
kono
parents:
diff changeset
31 F3 (4c, void *, memset, void *, int, size_t, (a1, 0, a3))
kono
parents:
diff changeset
32 F3 (4d, void *, memset, void *, int, size_t, (a1, 0, 10000))
kono
parents:
diff changeset
33 F3 (5a, int, memcmp, const void *, const void *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
34 F3 (5b, int, memcmp, const void *, const void *, size_t, (a1, "abcdefghijkl", a3))
kono
parents:
diff changeset
35 F2 (6, char *, strcpy, char *, const char *, (a1, a2))
kono
parents:
diff changeset
36 F2 (7, char *, stpcpy, char *, const char *, (a1, a2))
kono
parents:
diff changeset
37 F3 (8, char *, strncpy, char *, const char *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
38 F3 (9, char *, stpncpy, char *, const char *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
39 F2 (10, char *, strcat, char *, const char *, (a1, a2))
kono
parents:
diff changeset
40 F3 (11, char *, strncat, char *, const char *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
41 F1 (12a, size_t, strlen, const char *, (a1))
kono
parents:
diff changeset
42 F1 (12b, size_t, strlen, const char *, ("foobar"))
kono
parents:
diff changeset
43 F2 (13a, int, strcmp, const char *, const char *, (a1, a2))
kono
parents:
diff changeset
44 F2 (13b, int, strcmp, const char *, const char *, (a1, "abcdefghijklm"))
kono
parents:
diff changeset
45 F3 (14a, int, strncmp, const char *, const char *, size_t, (a1, a2, a3))
kono
parents:
diff changeset
46 F3 (14b, int, strncmp, const char *, const char *, size_t, (a1, "abcdefghijklm", 10))
kono
parents:
diff changeset
47 F2 (15, char *, strchr, const char *, int, (a1, a2))
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 /* All the calls above should be tail call optimized on i?86/x86-64. */
kono
parents:
diff changeset
50 /* { dg-final { scan-assembler-not "call" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } */