The testcase below passes the entry point to 'lll' call as an address of the
label ll_def. printf line disappears completely.

Obviously people should only use such code when they really know what they are
doing. But compilation result here is complately wrong and isn't usable in any
way.

--- testcase ---
#include <stdio.h>
#include <stdlib.h>

__attribute__ ((noinline)) void lll(void*) {
}

void mainx() {
  lll(&&ll_def);
  return;
ll_def:
  printf("default\n");
  return;
}


-- 
           Summary: code addressed only by label with it's address taken is
                    ignored
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: yuri at tsoft dot com


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

Reply via email to