[llvm-bugs] [Bug 28451] New: [TableGen] DFA table wrong with multiple itineraries

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Jul 7 05:39:45 PDT 2016


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

            Bug ID: 28451
           Summary: [TableGen] DFA table wrong with multiple itineraries
           Product: tools
           Version: 3.8
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: TableGen
          Assignee: unassignedbugs at nondot.org
          Reporter: lars+llvmbug at 6xq.net
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Created attachment 16708
  --> https://llvm.org/bugs/attachment.cgi?id=16708&action=edit
Truncated tblgen debugging output

Commit bf390b05bc5c3674520ae480af69d1a935a06f2b does not take into account that
multiple itineraries can exist for the same architecture and assigns FU
name/value mappings for all of them to the same FUNameToBitsMap in
collectAllFuncUnits, overwriting previous ones. This results in an (seemingly
unrelated) assertion failure, because the generated DFA table lacks the
expected state transitions:

clang-3.8: /lib/CodeGen/DFAPacketizer.cpp:129: void
llvm::DFAPacketizer::reserveResources(const llvm::MCInstrDesc*): Assertion
`CachedTable.count(StateTrans) != 0' failed.

See attached log of -debug-only dfa-emitter, which demonstrates the problem
(CoreVAItineraries_1slot’s ME0 stage is assigned value 0x4, which is
overwritten by CoreVAItineraries_4slot’s ME0=0x10 and used in
collectAllInsnClasses below).

-- 
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/20160707/ba88416e/attachment.html>


More information about the llvm-bugs mailing list