(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
pr54009.c
       1  /* { dg-do compile { target { powerpc*-*-* } } } */
       2  /* { dg-require-effective-target powerpc_fprs } */
       3  /* { dg-options "-O2" } */
       4  /* { dg-final { scan-assembler-not "\[\+\]32768" } } */
       5  
       6  /* -O2 -m32 store to x.d in w was
       7      lis 9,x+32764@ha
       8      stw 10,x+32764@l(9)
       9      stw 11,x+32768@l(9)  <--  wrap!  */
      10  
      11  struct big {
      12    char a[32764];
      13    double d __attribute__ ((aligned (4)));
      14  } __attribute__ ((packed));
      15  
      16  extern struct big x;
      17  double y;
      18  
      19  void r (void)
      20  {
      21    double tmp = x.d;
      22  #if 1
      23    asm ("#": "+r" (tmp)
      24         : : "fr0", "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7",
      25             "fr8", "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
      26             "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
      27             "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31");
      28  #endif
      29    y = tmp;
      30  }
      31  
      32  void w (void)
      33  {
      34    double tmp = y;
      35  #if 1
      36    asm ("#": "+r" (tmp)
      37         : : "fr0", "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7",
      38             "fr8", "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
      39             "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
      40             "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31");
      41  #endif
      42    x.d = tmp;
      43  }