public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/58335] New: S/390: reload vs lra regression - testcase builtin-in-setjmp
@ 2013-09-06 12:23 krebbel at gcc dot gnu.org
  2013-09-10 14:44 ` [Bug middle-end/58335] " vmakarov at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: krebbel at gcc dot gnu.org @ 2013-09-06 12:23 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 58335
           Summary: S/390: reload vs lra regression - testcase
                    builtin-in-setjmp
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: krebbel at gcc dot gnu.org

The following testcase fails when compiling with LRA enabled and succeeds
without LRA:

FAIL: gcc.c-torture/execute/built-in-setjmp.c execution,  -O1

main:
.LFB1:
    .loc 1 16 0
    stmg    %r6,%r15,48(%r15)
.LCFI2:
    larl    %r13,.L13
    lgr    %r14,%r15
    aghi    %r15,-240
.LCFI3:
    aghi    %r14,-64
    std    %f8,0(%r14)
    std    %f10,8(%r14)
    std    %f12,16(%r14)
    std    %f14,24(%r14)
    std    %f9,32(%r14)
    std    %f11,40(%r14)
    std    %f13,48(%r14)
    std    %f15,56(%r14)
    lgr    %r11,%r15
.LCFI4:
    .loc 1 17 0
    aghi    %r15,-32
    lgr    %r2,%r15
    aghi    %r2,160
    stg    %r2,160(%r11)
.LVL0:
    .loc 1 19 0
    larl    %r1,.LC1
    mvc    0(5,%r2),0(%r1)
    .loc 1 21 0
    larl    %r1,buf
    la    %r3,176(%r11)       176+r11 is stored as framepointer
    stg    %r3,0(%r1)
    larl    %r3,.L4
    stg    %r3,8(%r1)
    stg    %r15,24(%r1)
    stg    %r13,32(%r1)
    lhi    %r1,0
    .loc 1 23 0
    stg    %r2,168(%r11)
    j    .L5
.LVL1:
.L4:
    .loc 1 21 0
    lghi    %r1,-160
    la    %r11,0(%r1,%r11)    When restoring r11 only 160 is subtracted
    lhi    %r1,1
.L5:
    .loc 1 21 0 is_stmt 0 discriminator 4
    ltr    %r1,%r1
    je    .L6
    .loc 1 23 0 is_stmt 1
    lhi    %r0,0
    larl    %r1,.LC1
    lg    %r2,168(%r11)       Wrong value loaded here
    clst    %r1,%r2             segfault here


During LRA the elimination offset for r34 %fp to r11 changes from 160 to 176.
The first insn gets the update but not the second.  From a first glance the
reason appears to be that the insn for "lghi %r1,-160" it self is generated by
a reload using a pseudo register which equals -160. This register does not seem
to get the update after the offset changed.


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

* [Bug middle-end/58335] S/390: reload vs lra regression - testcase builtin-in-setjmp
  2013-09-06 12:23 [Bug middle-end/58335] New: S/390: reload vs lra regression - testcase builtin-in-setjmp krebbel at gcc dot gnu.org
@ 2013-09-10 14:44 ` vmakarov at gcc dot gnu.org
  2013-09-12 18:23 ` vmakarov at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: vmakarov at gcc dot gnu.org @ 2013-09-10 14:44 UTC (permalink / raw)
  To: gcc-bugs

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

Vladimir Makarov <vmakarov at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vmakarov at gcc dot gnu.org

--- Comment #1 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
LRA does not update elimination offset on subsequent passes as insns for
previous elimination offset updates are more complicated on s390 than usual.

I guess we need a different elimination approach (without parsing already
generated offset elimination insn) independent on insns generated.  It is
necessary not only for s390 but for better LRA portability in whole.

I hope to finish this until end of the week.


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

* [Bug middle-end/58335] S/390: reload vs lra regression - testcase builtin-in-setjmp
  2013-09-06 12:23 [Bug middle-end/58335] New: S/390: reload vs lra regression - testcase builtin-in-setjmp krebbel at gcc dot gnu.org
  2013-09-10 14:44 ` [Bug middle-end/58335] " vmakarov at gcc dot gnu.org
@ 2013-09-12 18:23 ` vmakarov at gcc dot gnu.org
  2013-09-20  6:30 ` krebbel at gcc dot gnu.org
  2013-09-20  6:31 ` krebbel at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: vmakarov at gcc dot gnu.org @ 2013-09-12 18:23 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
Author: vmakarov
Date: Thu Sep 12 18:23:09 2013
New Revision: 202536

URL: http://gcc.gnu.org/viewcvs?rev=202536&root=gcc&view=rev
Log:
2013-09-12  Vladimir Makarov  <vmakarov@redhat.com>

    PR middle-end/58335
    * lra-eliminations (remove_reg_equal_offset_note): New.
    (eliminate_regs_in_insn): Rewrite frame pointer to hard frame
    pointer elimination with using remove_reg_equal_offset_note.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/lra-eliminations.c


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

* [Bug middle-end/58335] S/390: reload vs lra regression - testcase builtin-in-setjmp
  2013-09-06 12:23 [Bug middle-end/58335] New: S/390: reload vs lra regression - testcase builtin-in-setjmp krebbel at gcc dot gnu.org
  2013-09-10 14:44 ` [Bug middle-end/58335] " vmakarov at gcc dot gnu.org
  2013-09-12 18:23 ` vmakarov at gcc dot gnu.org
@ 2013-09-20  6:30 ` krebbel at gcc dot gnu.org
  2013-09-20  6:31 ` krebbel at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: krebbel at gcc dot gnu.org @ 2013-09-20  6:30 UTC (permalink / raw)
  To: gcc-bugs

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

Andreas Krebbel <krebbel at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #3 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
Regression is fixed. Thanks!


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

* [Bug middle-end/58335] S/390: reload vs lra regression - testcase builtin-in-setjmp
  2013-09-06 12:23 [Bug middle-end/58335] New: S/390: reload vs lra regression - testcase builtin-in-setjmp krebbel at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2013-09-20  6:30 ` krebbel at gcc dot gnu.org
@ 2013-09-20  6:31 ` krebbel at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: krebbel at gcc dot gnu.org @ 2013-09-20  6:31 UTC (permalink / raw)
  To: gcc-bugs

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

Andreas Krebbel <krebbel at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |CLOSED

--- Comment #4 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
Closing per comment above.


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

end of thread, other threads:[~2013-09-20  6:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-06 12:23 [Bug middle-end/58335] New: S/390: reload vs lra regression - testcase builtin-in-setjmp krebbel at gcc dot gnu.org
2013-09-10 14:44 ` [Bug middle-end/58335] " vmakarov at gcc dot gnu.org
2013-09-12 18:23 ` vmakarov at gcc dot gnu.org
2013-09-20  6:30 ` krebbel at gcc dot gnu.org
2013-09-20  6:31 ` krebbel 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).