http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55749



             Bug #: 55749

           Summary: gcc 4.7.1 removes labels mistakenly

    Classification: Unclassified

           Product: gcc

           Version: 4.7.1

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: c

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: blue_3...@hotmail.com





gcc version 4.7.1 (GCC) x86_64-unknown-linux-gnu



in the following small c program, label-as-value always incorrectly uses the

begining of the function (.e. pointer p is always set to the begining of foo).

Turning of scheduling will generate the correct code.



Is this a known bug? any pointer will be appreciated. thanks

>cat m.c



void *p;

extern void bar();

void foo()

{

    p = &&my_label;

    bar();



my_label:



    bar();

}



> gcc -O2 -S m.c



> less m.s



       .globl  foo

        .type   foo, @function

foo:

.LFB0:

.L2:

        subq    $8, %rsp

.LCFI0:

        xorl    %eax, %eax

        movq    $.L2, p(%rip)

        call    bar

        xorl    %eax, %eax

        addq    $8, %rsp

.LCFI1:

        jmp     bar

.LFE0:

        .size   foo, .-foo

        .comm   p,8,8

        .comm   i,4,4

Reply via email to