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

            Bug ID: 115835
           Summary: [15 regression] FAIL:
                    gcc.target/s390/section-anchors.c since
                    r15-1579-g792f97b44ffc5e
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: testsuite-fail
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: stefansf at gcc dot gnu.org
  Target Milestone: ---
            Target: s390*-*-*

Prior r15-1579-g792f97b44ffc5e we emitted for

int a = 1, b = 2;

void
f ()
{
  a = 1234;
  b = 5678;
}

a single load address

f:
        larl    %r1,.LANCHOR0
        mvhi    0(%r1),1234
        mvhi    4(%r2),5678
        br      %r14

whereas afterwards we emit two

f:
        larl    %r1,.LANCHOR0
        larl    %r2,.LANCHOR0+4
        mvhi    0(%r1),1234
        mvhi    0(%r2),5678
        br      %r14

This is due to late_combine1 merging larl with the move resulting in

(insn 6 2 8 2 (set (mem/c:SI (symbol_ref:DI ("*.LANCHOR0") [flags 0x182]) [1
a+0 S4 A32])
        (const_int 1234 [0x4d2])) "section-anchors.c":11:5 1495 {*movsi_zarch}
     (nil))
(insn 8 6 0 2 (set (mem/c:SI (const:DI (plus:DI (symbol_ref:DI ("*.LANCHOR0")
[flags 0x182])
                    (const_int 4 [0x4]))) [1 b+0 S4 A32])
        (const_int 5678 [0x162e])) "section-anchors.c":12:5 1495 {*movsi_zarch}
     (nil))

which get split by late_combine2 again

(insn 13 2 6 2 (set (reg:DI 1 %r1 [65])
        (symbol_ref:DI ("*.LANCHOR0") [flags 0x182])) "section-anchors.c":11:5
1489 {*movdi_64}
     (nil))
(insn 6 13 14 2 (set (mem/c:SI (reg:DI 1 %r1 [65]) [1 a+0 S4 A32])
        (const_int 1234 [0x4d2])) "section-anchors.c":11:5 1495 {*movsi_zarch}
     (nil))
(insn 14 6 8 2 (set (reg:DI 1 %r1 [67])
        (const:DI (plus:DI (symbol_ref:DI ("*.LANCHOR0") [flags 0x182])
                (const_int 4 [0x4])))) "section-anchors.c":12:5 1489
{*movdi_64}
     (nil))
(insn 8 14 11 2 (set (mem/c:SI (reg:DI 1 %r1 [67]) [1 b+0 S4 A32])
        (const_int 5678 [0x162e])) "section-anchors.c":12:5 1495 {*movsi_zarch}
     (nil))

Reply via email to