Mercurial > hg > CbC > CbC_gcc
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" } } */ |