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!

Reply via email to