/* PR 21171. Ivopts should not rewrite references to volatile memory. */ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ typedef unsigned int u_int32_t; typedef unsigned char u_int8_t; #define AIC_VECTORS 32 typedef volatile struct AT91RM9200_regs { u_int32_t SVR[AIC_VECTORS]; } AT91RM9200_regs_t; #define CPUReg ((AT91RM9200_regs_t*)0xFFF00000) extern const u_int32_t __IntTable[AIC_VECTORS]; int main() { int c; for (c = 0; c < AIC_VECTORS; c++) CPUReg->SVR[c] = __IntTable[c]; return 0; } /* { dg-final { scan-tree-dump-times "SVR" 1 "optimized"} } */ /* { dg-final { cleanup-tree-dump "optimized" } } */