2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
[official-gcc.git] / gcc / testsuite / gcc.target / avr / torture / tiny-absdata-1.c
blobc1c645fc7a683052e40aee9813833907f904a805
1 /* { dg-do compile } */
2 /* { dg-require-effective-target avr_tiny } */
4 typedef struct
6 char a, b, c;
7 } abc_t;
9 extern char varA __attribute__((absdata));
10 extern char varB __attribute__((absdata));
12 extern int arrayA[] __attribute__((absdata));
13 extern int arrayB[] __attribute__((absdata));
14 extern char arrayC[] __attribute__((address(0x80)));
16 extern abc_t abc __attribute__((absdata));
18 char get_1 (void)
20 return varA;
23 int get_2 (void)
25 return arrayA[3];
28 char get_3 (void)
30 return abc.a + abc.b + abc.c;
34 void put_1 (char b)
36 varB = b;
39 void put_2 (int b)
41 arrayB[3] = b;
44 void put_3 (void)
46 abc.a = abc.b = abc.c = 0;
49 void put_4 (void)
51 arrayC[0] = arrayC[1] = arrayC[2] = 0;
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" } } */
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," } } */
68 /* { dg-final { scan-assembler "sts abc," } } */
69 /* { dg-final { scan-assembler "sts abc\\+1," } } */
70 /* { dg-final { scan-assembler "sts abc\\+2," } } */