(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr96573.c
       1  /* PR tree-optimization/96573 */
       2  /* { dg-do compile { target { lp64 || ilp32 } } } */
       3  /* { dg-require-effective-target bswap } */
       4  /* { dg-options "-O3 -fdump-tree-optimized" } */
       5  /* { dg-final { scan-tree-dump "__builtin_bswap\|VEC_PERM_EXPR\[^\n\r]*7, 6, 5, 4, 3, 2, 1, 0" "optimized" { xfail vect_variable_length } } } */
       6  
       7  typedef __SIZE_TYPE__ size_t;
       8  
       9  void *
      10  foo (void * const p)
      11  {
      12    const size_t m = sizeof (p) - 1;
      13    const unsigned char * const o = (unsigned char*) &p;
      14    void *n;
      15    unsigned char * const q = (unsigned char *) &n;
      16    unsigned char i;
      17    for (i = 0; i <= m; ++i)
      18      q[m - i] = o[i];
      19    return n;
      20  }