Viewing file: tiny-absdata-2.c (1.75 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-require-effective-target avr_tiny } */ /* { dg-options "-mabsdata" } */
typedef struct { char a, b, c; } abc_t;
extern char varA; extern char varB; extern const char varC __attribute__((progmem));
extern int arrayA[]; extern int arrayB[]; extern char arrayC[] __attribute__((address(0x80))); extern char arrayD[] __attribute__((address(0xc0)));
extern abc_t abc;
char get_1 (void) { return varA; }
int get_2 (void) { return arrayA[3]; }
char get_3 (void) { return abc.a + abc.b + abc.c; }
char get_4 (void) { return varC; }
void put_1 (char b) { varB = b; }
void put_2 (int b) { arrayB[3] = b; }
void put_3 (void) { abc.a = abc.b = abc.c = 0; }
void put_4 (void) { arrayC[0] = arrayC[1] = arrayC[2] = 0; }
void put_5 (void) { arrayD[0] = 0; }
/* { dg-final { scan-assembler "lds r\[0-9\]+,varA" } } */ /* { dg-final { scan-assembler "lds r\[0-9\]+,arrayA\\+6" } } */ /* { dg-final { scan-assembler "lds r\[0-9\]+,arrayA\\+6\\+1" } } */ /* { dg-final { scan-assembler "lds r\[0-9\]+,abc" } } */ /* { dg-final { scan-assembler "lds r\[0-9\]+,abc\\+1" } } */ /* { dg-final { scan-assembler "lds r\[0-9\]+,abc\\+2" } } */
/* { dg-final { scan-assembler "sts varB," } } */ /* { dg-final { scan-assembler "sts arrayB\\+6," } } */ /* { dg-final { scan-assembler "sts arrayB\\+6\\+1," } } */ /* { dg-final { scan-assembler "sts arrayC," } } */ /* { dg-final { scan-assembler "sts arrayC\\+1," } } */ /* { dg-final { scan-assembler "sts arrayC\\+2," } } */
/* { dg-final { scan-assembler "sts abc," } } */ /* { dg-final { scan-assembler "sts abc\\+1," } } */ /* { dg-final { scan-assembler "sts abc\\+2," } } */
/* { dg-final { scan-assembler-not "lds r\[0-9\]+,varC" } } */ /* { dg-final { scan-assembler-not "sts arrayD," } } */
|