(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
avr/
torture/
tiny-absdata-1.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target avr_tiny } */
       3  
       4  typedef struct
       5  {
       6    char a, b, c;
       7  } abc_t;
       8  
       9  extern char varA __attribute__((absdata));
      10  extern char varB __attribute__((absdata));
      11  
      12  extern int arrayA[] __attribute__((absdata));
      13  extern int arrayB[] __attribute__((absdata));
      14  extern char arrayC[] __attribute__((address(0x80)));
      15  
      16  extern abc_t abc __attribute__((absdata));
      17  
      18  char get_1 (void)
      19  {
      20    return varA;
      21  }
      22  
      23  int get_2 (void)
      24  {
      25    return arrayA[3];
      26  }
      27  
      28  char get_3 (void)
      29  {
      30    return abc.a + abc.b + abc.c;
      31  }
      32  
      33  
      34  void put_1 (char b)
      35  {
      36    varB = b;
      37  }
      38  
      39  void put_2 (int b)
      40  {
      41    arrayB[3] = b;
      42  }
      43  
      44  void put_3 (void)
      45  {
      46    abc.a = abc.b = abc.c = 0;
      47  }
      48  
      49  void put_4 (void)
      50  {
      51    arrayC[0] = arrayC[1] = arrayC[2] = 0;
      52  }
      53  
      54  /* { dg-final { scan-assembler "lds r\[0-9\]+,varA" } } */
      55  /* { dg-final { scan-assembler "lds r\[0-9\]+,arrayA\\+6" } } */
      56  /* { dg-final { scan-assembler "lds r\[0-9\]+,arrayA\\+6\\+1" } } */
      57  /* { dg-final { scan-assembler "lds r\[0-9\]+,abc" } } */
      58  /* { dg-final { scan-assembler "lds r\[0-9\]+,abc\\+1" } } */
      59  /* { dg-final { scan-assembler "lds r\[0-9\]+,abc\\+2" } } */
      60  
      61  /* { dg-final { scan-assembler "sts varB," } } */
      62  /* { dg-final { scan-assembler "sts arrayB\\+6," } } */
      63  /* { dg-final { scan-assembler "sts arrayB\\+6\\+1," } } */
      64  /* { dg-final { scan-assembler "sts arrayC," } } */
      65  /* { dg-final { scan-assembler "sts arrayC\\+1," } } */
      66  /* { dg-final { scan-assembler "sts arrayC\\+2," } } */
      67  
      68  /* { dg-final { scan-assembler "sts abc," } } */
      69  /* { dg-final { scan-assembler "sts abc\\+1," } } */
      70  /* { dg-final { scan-assembler "sts abc\\+2," } } */