7 Commits

Author SHA1 Message Date
James Molloy
263faad3ed [UnitTests] Try and pacify gcc-5
This looks like a defect in gcc-5 where it chooses a constexpr
constructor from the initializer-list that it considers to be explicit.

I've tried to reproduce but I can't install anything prior to gcc-6 easily
on my system, and that doesn't have the error. So this is speculative
pacification.

Reported by Steven Wan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373820 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-05 08:57:17 +00:00
James Molloy
1b7dd0a628 [TableGen] Introduce a generic automaton (DFA) backend
Summary:
This patch introduces -gen-automata, a backend for generating deterministic finite-state automata.

DFAs are already generated by the -gen-dfa-packetizer backend. This backend is more generic and will
hopefully be used to implement the DFA generation (and determinization) for the packetizer in the
future.

This backend allows not only generation of a DFA from an NFA (nondeterministic finite-state
automaton), it also emits sidetables that allow a path through the DFA under a sequence of inputs to
be analyzed, and the equivalent set of all possible NFA transitions extracted.

This allows a user to not just answer "can my problem be solved?" but also "what is the
solution?". Clearly this analysis is more expensive than just playing a DFA forwards so is
opt-in. The DFAPacketizer has this behaviour already but this is a more compact and generic
representation.

Examples are bundled in unittests/TableGen/Automata.td. Some are trivial, but the BinPacking example
is a stripped-down version of the original target problem I set out to solve, where we pack values
(actually immediates) into bins (an immediate pool in a VLIW bundle) subject to a set of esoteric
constraints.

Reviewers: t.p.northover

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67968

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373718 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04 09:03:36 +00:00
Daniel Sanders
ec358cd538 [gicombiner] Add a CodeExpander to handle C++ fragments with variable expansion
Summary:
This will handle expansion of C++ fragments in the declarative combiner
including custom predicates, and escapes into C++ to aid the migration
effort.

Fixed the -DLLVM_LINK_LLVM_DYLIB=ON using DISABLE_LLVM_LINK_LLVM_DYLIB when
creating the library. Apparently it automatically links to libLLVM.dylib
and we don't want that from tablegen.

Reviewers: bogner, volkan

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68288

llvm-svn: 373551

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373651 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-03 19:13:39 +00:00
Kristina Brooks
ae2b7d76de Revert 373551 (CodeExpander.cpp CMake issue)
Fix buildbots and revert the CodeExpander commit.

(See http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190930/699857.html )



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373581 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-03 11:04:48 +00:00
Kristina Brooks
ca10309b33 Revert 373555: libLLVM+modules failure with CMake 3.10.2
This reverts rL373555. I've sent an email out regarding the issue.

Commit on GitHub:
45f682f471



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373579 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-03 10:48:37 +00:00
Daniel Sanders
65e15736cd [gicombiner] Make rL373551 compatible with older cmakes
Newer cmakes appear to be more flexible w.r.t object libraries. Convert to
a static library so that it works with older cmakes too

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373555 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-03 01:49:04 +00:00
Daniel Sanders
e85df0ba54 [gicombiner] Add a CodeExpander to handle C++ fragments with variable expansion
Summary:
This will handle expansion of C++ fragments in the declarative combiner
including custom predicates, and escapes into C++ to aid the migration
effort.

Reviewers: bogner, volkan

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68288

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373551 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-03 01:04:42 +00:00