[llvm-bugs] [Bug 29164] New: amdgpu + tonga unigine vallley assert since Create subranges for new intervals resulting from live interval splitting

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Aug 28 04:17:36 PDT 2016


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

            Bug ID: 29164
           Summary: amdgpu + tonga unigine vallley assert since Create
                    subranges for new intervals resulting from live
                    interval splitting
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: AMDGPU
          Assignee: unassignedbugs at nondot.org
          Reporter: adf.lists at gmail.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Created attachment 17060
  --> https://llvm.org/bugs/attachment.cgi?id=17060&action=edit
R600_DEBUG=vs,ps,fs

R9285 tonga testing with unigine valley I get an assert since commit below.

R600_DEBUG=vs,ps,fs attached

valley_x64: /mnt/sdb1/Gits/llvm/include/llvm/ADT/IntervalMap.h:632: unsigned
int llvm::IntervalMapImpl::LeafNode< <template-parameter-1-1>,
<template-parameter-1-2>, <anonymous>, <template-parameter-1-4>
>::insertFrom(unsigned int&, unsigned int, KeyT, KeyT, ValT) [with KeyT =
llvm::SlotIndex; ValT = llvm::LiveInterval*; unsigned int N = 8u; Traits =
llvm::IntervalMapInfo<llvm::SlotIndex>]: Assertion `(i == Size ||
Traits::stopLess(b, start(i))) && "Overlapping insert"' failed.


commit 31a5f885bf5b8ed3107850a448660057705fd357
Author: Krzysztof Parzyszek <kparzysz at codeaurora.org>
Date:   Wed Aug 24 13:37:55 2016 +0000

    Create subranges for new intervals resulting from live interval splitting

    The register allocator can split a live interval of a register into a set
    of smaller intervals. After the allocation of registers is complete, the
    rewriter will modify the IR to replace virtual registers with the corres-
    ponding physical registers. At this stage, if a register corresponding
    to a subregister of a virtual register is used, the rewriter will check
    if that subregister is undefined, and if so, it will add the <undef> flag
    to the machine operand. The function verifying liveness of the subregis-
    ter would assume that it is undefined, unless any of the subranges of the
    live interval proves otherwise.
    The problem is that the live intervals created during splitting do not
    have any subranges, even if the original parent interval did. This could
    result in the <undef> flag placed on a register that is actually defined.

    Differential Revision: http://reviews.llvm.org/D21189


    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279625
91177308-0d34-0410-b5e6-96231b3b80d8

-- 
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/20160828/cdf10a98/attachment-0001.html>


More information about the llvm-bugs mailing list