modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/builtins/memchr.c (about)

     1  /* Copyright (C) 2007  Free Software Foundation.
     2  
     3     Ensure all expected transformations of builtin memchr occur
     4     and perform correctly.
     5  
     6     Written by Paolo Carlini, 10/5/2007.  */
     7  
     8  extern void abort (void);
     9  typedef __SIZE_TYPE__ size_t;
    10  extern void *memchr (const void *, int, size_t);
    11  
    12  void
    13  main_test (void)
    14  {
    15    const char* const foo1 = "hello world";
    16  
    17    if (memchr (foo1, 'x', 11))
    18      abort ();
    19    if (memchr (foo1, 'o', 11) != foo1 + 4)
    20      abort ();
    21    if (memchr (foo1, 'w', 2))
    22      abort ();
    23    if (memchr (foo1 + 5, 'o', 6) != foo1 + 7)
    24      abort ();
    25    if (memchr (foo1, 'd', 11) != foo1 + 10)
    26      abort ();
    27    if (memchr (foo1, 'd', 10))
    28      abort ();
    29    if (memchr (foo1, '\0', 11))
    30      abort ();
    31    if (memchr (foo1, '\0', 12) != foo1 + 11)
    32      abort ();
    33  
    34    /* Test at least one instance of the __builtin_ style.  We do this
    35       to ensure that it works and that the prototype is correct.  */
    36    if (__builtin_memchr (foo1, 'r', 11) != foo1 + 8)
    37      abort ();
    38  }