(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr87600-1.c
       1  /* PR rtl-optimization/87600  */
       2  /* { dg-do compile { target aarch64*-*-* arm*-*-* i?86-*-* powerpc*-*-* s390*-*-* x86_64-*-* } } */
       3  /* { dg-options "-O2" } */
       4  
       5  #include "pr87600.h"
       6  
       7  /* The following are all valid uses of local register variables.  */
       8  
       9  long
      10  test0 (long arg)
      11  {
      12    register long var asm (REG1);
      13    asm ("blah %0 %1" : "+&r" (var) : "r" (arg));
      14    return var;
      15  }
      16  
      17  long
      18  test1 (long arg0, long arg1)
      19  {
      20    register long var asm (REG1);
      21    asm ("blah %0, %1, %2" : "=&r" (var) : "r" (arg0), "0" (arg1));
      22    return var + arg1;
      23  }
      24  
      25  long
      26  test2 (void)
      27  {
      28    register long var1 asm (REG1);
      29    register long var2 asm (REG1);
      30    asm ("blah %0 %1" : "=&r" (var1) : "0" (var2));
      31    return var1;
      32  }
      33  
      34  long
      35  test3 (void)
      36  {
      37    register long var1 asm (REG1);
      38    register long var2 asm (REG2);
      39    long var3;
      40    asm ("blah %0 %1" : "=&r" (var1), "=r" (var3) : "1" (var2));
      41    return var1 + var3;
      42  }
      43  
      44  long
      45  test4 (void)
      46  {
      47    register long var1 asm (REG1);
      48    register long var2 asm (REG2);
      49    register long var3 asm (REG2);
      50    asm ("blah %0 %1" : "=&r" (var1), "=r" (var2) : "1" (var3));
      51    return var1;
      52  }