comparison gcc/testsuite/gcc.dg/builtin-memchr-3.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* Verify that memchr calls with a pointer to a constant character
2 are folded as expected.
3 { dg-do compile }
4 { dg-options "-O1 -Wall -fdump-tree-gimple" } */
5
6 typedef __SIZE_TYPE__ size_t;
7 typedef __WCHAR_TYPE__ wchar_t;
8
9 extern void* memchr (const void*, int, size_t);
10 extern int printf (const char*, ...);
11 extern void abort (void);
12
13 #define A(expr) \
14 ((expr) \
15 ? (void)0 \
16 : (printf ("assertion failed on line %i: %s\n", \
17 __LINE__, #expr), \
18 abort ()))
19
20 const char nul = 0;
21 const char cha = 'a';
22
23 const char* const pnul = &nul;
24 const char* const pcha = &cha;
25
26 const struct
27 {
28 char c;
29 } snul = { 0 },
30 schb = { 'b' },
31 sarr[] = {
32 { 0 },
33 { 'c' }
34 };
35
36 const char* const psarr0c = &sarr[0].c;
37 const char* const psarr1c = &sarr[1].c;
38
39 void test_memchr_cst_char (void)
40 {
41 A (&nul == memchr (&nul, 0, 1));
42 A (!memchr (&nul, 'a', 1));
43
44 A (&cha == memchr (&cha, 'a', 1));
45 A (!memchr (&cha, 0, 1));
46
47 A (&nul == memchr (pnul, 0, 1));
48 A (!memchr (pnul, 'a', 1));
49
50 A (&cha == memchr (pcha, 'a', 1));
51 A (!memchr (pcha, 0, 1));
52
53 A (&snul.c == memchr (&snul.c, 0, 1));
54 A (!memchr (&snul.c, 'a', 1));
55
56 A (&schb.c == memchr (&schb.c, 'b', 1));
57 A (!memchr (&schb.c, 0, 1));
58
59 A (&sarr[0].c == memchr (&sarr[0].c, 0, 1));
60 A (!memchr (&sarr[0].c, 'a', 1));
61
62 A (&sarr[1].c == memchr (&sarr[1].c, 'c', 1));
63 A (!memchr (&sarr[1].c, 0, 1));
64
65 A (&sarr[0].c == memchr (psarr0c, 0, 1));
66 A (!memchr (psarr0c, 'a', 1));
67
68 A (&sarr[1].c == memchr (psarr1c, 'c', 1));
69 A (!memchr (psarr1c, 0, 1));
70 }
71
72 /* { dg-final { scan-tree-dump-not "abort" "gimple" } } */