| /* PR 21171. Ivopts should not rewrite references to volatile memory. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O1 -fdump-tree-optimized" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| 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" } } */ |