1 /* Verify that memchr calls with the address of a constant character
2 are folded as expected even at -O0.
4 { dg-options "-O0 -Wall -fdump-tree-gimple" } */
6 typedef __SIZE_TYPE__
size_t;
7 typedef __WCHAR_TYPE__
wchar_t;
9 extern void* memchr (const void*, int, size_t);
10 extern int printf (const char*, ...);
11 extern void abort (void);
16 : (printf ("assertion failed on line %i: %s\n", \
34 void test_memchr_cst_char (void)
36 A (&nul
== memchr (&nul
, 0, 1));
37 A (!memchr (&nul
, 'a', 1));
39 A (&cha
== memchr (&cha
, 'a', 1));
40 A (!memchr (&cha
, 0, 1));
42 A (&snul
.c
== memchr (&snul
.c
, 0, 1));
43 A (!memchr (&snul
.c
, 'a', 1));
45 A (&schb
.c
== memchr (&schb
.c
, 'b', 1));
46 A (!memchr (&schb
.c
, 0, 1));
48 A (&sarr
[0].c
== memchr (&sarr
[0].c
, 0, 1));
49 A (!memchr (&sarr
[0].c
, 'a', 1));
51 A (&sarr
[1].c
== memchr (&sarr
[1].c
, 'c', 1));
52 A (!memchr (&sarr
[1].c
, 0, 1));
55 /* { dg-final { scan-tree-dump-not "abort" "gimple" } } */