public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/64536] New: [4.9/5 Regression] Undefined .L* symbol starting with jump2 on s390x
@ 2015-01-08 10:05 jakub at gcc dot gnu.org
  2015-01-08 10:06 ` [Bug rtl-optimization/64536] " jakub at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2015-01-08 10:05 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64536

            Bug ID: 64536
           Summary: [4.9/5 Regression] Undefined .L* symbol starting with
                    jump2 on s390x
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
                CC: krebbel at gcc dot gnu.org, vmakarov at gcc dot gnu.org
            Target: s390x-linux

struct S { long q; } *h;
long a, b, g, j, k, *c, *d, *e, *f, *i;
long *baz (void)
{
  asm volatile ("" : : : "memory");
  return e;
}

void
bar (int x)
{
  int y;
  for (y = 0; y < x; y++)
    {
      switch (b)
        {
        case 0:
        case 2:
          a++;
          break;
        case 3:
          a++;
          break;
        case 1:
          a++;
        }
      if (d)
        {
          f = baz ();
          g = k++;
          if (&h->q)
            {
              j = *f;
              h->q = *f;
            }
          else
            i = (long *) (h->q = *f);
          *c++ = (long) f;
          e += 6;
        }
      else
        {
          f = baz ();
          g = k++;
          if (&h->q)
            {
              j = *f;
              h->q = *f;
            }
          else
            i = (long *) (h->q = *f);
          *c++ = (long) f;
          e += 6;
        }
    }
}

int
main ()
{
  return 0;
}

fails to link on s390x-linux with -O2 -m64 -fPIC, starting with r199754.
For a tablejump, we load of the jump_table_data label is hoisted before the
loop, then RA decides to spill it to stack (seems both with reload and lra),
and then jump2 goes wild and deletes the casesi_jump instruction (and lots of
other instructions it supposedly should not delete), but keeps the load of
jump_table_data label (but the jump_table_data is gone).


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-01-09 22:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-08 10:05 [Bug rtl-optimization/64536] New: [4.9/5 Regression] Undefined .L* symbol starting with jump2 on s390x jakub at gcc dot gnu.org
2015-01-08 10:06 ` [Bug rtl-optimization/64536] " jakub at gcc dot gnu.org
2015-01-08 15:12 ` jakub at gcc dot gnu.org
2015-01-08 15:22 ` ebotcazou at gcc dot gnu.org
2015-01-08 16:46 ` jakub at gcc dot gnu.org
2015-01-09 21:17 ` jakub at gcc dot gnu.org
2015-01-09 21:36 ` jakub at gcc dot gnu.org
2015-01-09 22:15 ` jakub at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).