[llvm-bugs] [Bug 33024] New: -verify-regalloc discovers "Instruction ending live segment on dead slot has no dead flag"

via llvm-bugs llvm-bugs at lists.llvm.org
Fri May 12 05:39:28 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=33024

            Bug ID: 33024
           Summary: -verify-regalloc discovers "Instruction ending live
                    segment on dead slot has no dead flag"
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Common Code Generator Code
          Assignee: unassignedbugs at nondot.org
          Reporter: paulsson at linux.vnet.ibm.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 18436
  --> https://bugs.llvm.org/attachment.cgi?id=18436&action=edit
reduced testcase

With this reduced llvm-stress test case, run with

llc -mtriple=s390x-linux-gnu -mcpu=z13 -verify-regalloc -disable-lsr
-disable-machine-licm -disable-machine-dce -join-liveintervals=false -o
/dev/null ./tc_deadslot.ll

It seems that loadRegFromStackSlot() is called, and then verifier complains
that the created instruction is missing a dead-flag. I am not sure where this
should be fixed...

Output:

0B      BB#0: derived from LLVM BB %BB
            Live Ins: %R2L
16B             %vreg5<def> = COPY %R2L; GR32Bit:%vreg5
32B             %vreg10<def> = VGBM 0; VR128Bit:%vreg10
48B             VST %vreg10, <fi#0>, 0, %noreg; mem:ST16[FixedStack0](align=8)
VR128Bit:%vreg10
            Successors according to CFG: BB#1(?%)

64B     BB#1: derived from LLVM BB %CF253
            Predecessors according to CFG: BB#0 BB#1
72B             %vreg11<def> = VGBM 0; VR128Bit:%vreg11
80B             %vreg3<def> = COPY %vreg11; VR128Bit:%vreg3,%vreg11
96B             %vreg3<def,dead,tied1> = VLVGF %vreg3<tied0>, %vreg5, %noreg,
2; VR128Bit:%vreg3 GR32Bit:%vreg5
112B            ADJCALLSTACKDOWN 0
128B            %vreg6<def> = LZDR; FP64Bit:%vreg6
144B            %F0D<def> = COPY %vreg6; FP64Bit:%vreg6
160B            %F2D<def> = COPY %vreg6; FP64Bit:%vreg6
176B            CallBRASL <es:fmod>, %F0D, %F2D, <regmask %F8D %F9D %F10D %F11D
%F12D %F13D %F14D %F15D %F8S %F9S %F10S %F11S %F12S %F13S %F14S %F15S %R6D %R7D
%R8D %R9D %R10D %R11D %R12D %R13D %R14D %R15D %R6H %R7H %R8H %R9H %R10H %R11H
%R12H %R13H %R14H %R15H %R6L %R7L %R8L %R9L %R10L %R11L %R12L %R13L %R14L
%R15L>, %CC<imp-def,dead>, %F0D<imp-def>, ...
192B            ADJCALLSTACKUP 0, 0
208B            %vreg7<def> = COPY %F0D; VR64Bit:%vreg7
224B            %vreg2<def> = VL <fi#0>, 0, %noreg;
mem:LD16[FixedStack0](align=8) VR128Bit:%vreg2
240B            %vreg4<def,dead> = COPY %vreg7; VR64Bit:%vreg4,%vreg7
256B            %vreg8<def> = LHIMux 0; GRX32Bit:%vreg8
272B            CHIMux %vreg8, 0, %CC<imp-def>; GRX32Bit:%vreg8
288B            BRC 14, 6, <BB#1>, %CC<imp-use,kill>
304B            J <BB#2>
            Successors according to CFG: BB#1(0x7c000000 / 0x80000000 = 96.88%)
BB#2(0x04000000 / 0x80000000 = 3.12%)

320B    BB#2: derived from LLVM BB %CF258
            Predecessors according to CFG: BB#1 BB#2
336B            J <BB#2>
            Successors according to CFG: BB#2(?%)

# End machine code for function autogen_SD9889.

*** Bad machine code: Instruction ending live segment on dead slot has no dead
flag ***
- function:    autogen_SD9889
- basic block: BB#1 CF253 (0x4f45158) [64B;320B)
- instruction: 224B     %vreg2<def> = VL
- liverange:   [224r,224d:0)  0 at 224r
- v. register: %vreg2
- segment:     [224r,224d:0)
LLVM ERROR: Found 1 machine code errors.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170512/26ac6fe7/attachment.html>


More information about the llvm-bugs mailing list