(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr86048.c
       1  /* PR target/86048 */
       2  /* { dg-do assemble { target sse2 } } */
       3  /* { dg-options "-O2 -msse2" } */
       4  /* { dg-require-effective-target return_address } */
       5  
       6  extern void abort (void);
       7  
       8  void *foo (unsigned int *data, unsigned int len)
       9  {
      10    unsigned int local_data[128];
      11  
      12    if (len > 128)
      13      abort ();
      14  
      15    for (unsigned int i = 0; i < len; i++)
      16      local_data[i] = data[i] + data[len - 1 - i] * 2;
      17  
      18    void *ret = __builtin_frame_address (0);
      19  
      20    for (unsigned int i = 0; i < len; i++)
      21      ret = ret + local_data[i] % 8;
      22  
      23    __asm__ __volatile__ ("" : : : "%xmm6");
      24  
      25    return ret;
      26  }