https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63803
Bug ID: 63803 Summary: When GCC 4.9.2 compile with option -O2, the target is error. Product: gcc Version: 4.9.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: airbak.li at huawei dot com The option -fisolate-erroneous-paths-dereference in -O2 causes it. 1.file b.c: int main() { //volatile unsigned int //unsigned int orgin = *((int *)0); //ok //unsigned int orgin = *((unsigned int *)0); //ok unsigned int orgin = *((volatile unsigned int *)0); //nok printf("---"); return 0; } 2.compile: arm-none-eabi-gcc --specs=nosys.specs -O2 b.c -o b or arm-none-eabi-gcc --specs=nosys.specs -O1 -fisolate-erroneous-paths-dereference b.c -o b 3.asm 00008210 <main>: 8210: e3a03000 mov r3, #0 8214: e5933000 ldr r3, [r3] 8218: e7f000f0 udf #0 4.question: Why it is "udf #0"? Is it a BUG? Please help me, thanks!