1  /* This test should be switched off for a new target with less than 4 allocatable registers */
       2  /* { dg-do compile { target lra } } */
       3  int
       4  foo (void)
       5  {
       6    int x, y, z, v;
       7    
       8    asm goto ("": "=r" (x), "=r" (y), "=r" (z), "=r" (v) : : : lab, lab2, lab3, lab4);
       9   lab:
      10    return x;
      11   lab2:
      12    return y;
      13   lab3:
      14    return z;
      15   lab4:
      16    return v;
      17  }
      18  
      19  int
      20  foo2 (void)
      21  {
      22    int x = 0, y = 1, z = 2, v = 3;
      23    
      24    asm goto ("": "+r" (x), "+r" (y), "+r" (z), "+r" (v) : : : lab, lab2, lab3, lab4);
      25   lab:
      26    return x;
      27   lab2:
      28    return y;
      29   lab3:
      30    return z;
      31   lab4:
      32    return v;
      33  }
      34  
      35  int
      36  foo3 (void)
      37  {
      38    int x, y, z, v;
      39    
      40    asm goto ("": "=rm" (x), "=mr" (y), "=rm" (z), "=mr" (v) : : : lab, lab2, lab3, lab4);
      41   lab:
      42    return x;
      43   lab2:
      44    return y;
      45   lab3:
      46    return z;
      47   lab4:
      48    return v;
      49  }
      50  
      51  int
      52  foo4 (void)
      53  {
      54    int x, y, z, v;
      55    
      56    asm goto ("": "=r,m" (x), "=m,r" (y), "=r,m" (z), "=m,r" (v) : : : lab, lab2, lab3, lab4);
      57   lab:
      58    return x;
      59   lab2:
      60    return y;
      61   lab3:
      62    return z;
      63   lab4:
      64    return v;
      65  }