Viewing file: pr105160.c (1.12 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-O -fdump-ipa-modref" } */ #define sysreg_read(regname) \ ({ \ unsigned long __sr_val; \ asm volatile(""); \ \ __sr_val; \ })
#define sysreg_write(regname, __sw_val) \ do { \ asm volatile(""); \ } while (0)
#define isb() \ do { \ asm volatile( \ "isb" \ : \ : \ : "memory"); \ } while (0)
static unsigned long sctlr_read(void) { return sysreg_read(sctlr_el1); }
static void sctlr_write(unsigned long val) { sysreg_write(sctlr_el1, val); }
static void sctlr_rmw(void) { unsigned long val;
val = sctlr_read(); val |= 1UL << 7; sctlr_write(val); }
void sctlr_read_multiple(void) { sctlr_read(); sctlr_read(); sctlr_read(); sctlr_read(); }
void sctlr_write_multiple(void) { sctlr_write(0); sctlr_write(0); sctlr_write(0); sctlr_write(0); sctlr_write(0); }
void sctlr_rmw_multiple(void) { sctlr_rmw(); sctlr_rmw(); sctlr_rmw(); sctlr_rmw(); }
void function(void) { sctlr_read_multiple(); sctlr_write_multiple(); sctlr_rmw_multiple();
isb(); } /* { dg-final { scan-ipa-dump-not "Function found to be const" "modref" } } */
|