[Bug target/49866] New: [4.6 Regression] -mcmodel=large tail call fails to assemble

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jul 27 11:40:00 GMT 2011


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

           Summary: [4.6 Regression] -mcmodel=large tail call fails to
                    assemble
           Product: gcc
           Version: 4.6.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: jakub@gcc.gnu.org
                CC: uros@gcc.gnu.org
            Target: x86_64-linux


void fn (void *, int, int);
int fn2 (void);
void baz (int);

static void
foo (void *x, int y)
{
  int i;
  for (i = 0; i < y; i++)
    fn (x, fn2 (), i);
}

void
bar (int u, int v, int w, void *x)
{
  baz (u);
  foo (x, w);
  baz (u);
}

gcc -O2 -mcmodel=large -c rh725516.c
fails to assemble, we end up with
        jmp     *$baz
This got fixed on the trunk with
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=173797
but for the backport it would be certainly preferrable if we got a smaller and
less riskier fix than that.
In r166110 it was (likely incorrectly for large model, but at least it
assembled) emitting jmp baz, I expect the change came with
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166119



More information about the Gcc-bugs mailing list