History log of /external/llvm/lib/TableGen/TGParser.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4c5e43da7792f75567b693105cc53e3f1992ad98 08-Apr-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master llvm for rebase to r233350

Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
/external/llvm/lib/TableGen/TGParser.cpp
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/TableGen/TGParser.cpp
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/TableGen/TGParser.cpp
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/TableGen/TGParser.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/TableGen/TGParser.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/TableGen/TGParser.cpp
5cc16a9d89d98c67882aeb3baa3c7813c71b4594 20-Aug-2013 Craig Topper <craig.topper@gmail.com> Add an error check for a typo I accidentally made in a td file that caused an assert to fire.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188742 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
47cfec02842f885b46ea0d3c812793e660691640 07-Aug-2013 Reid Kleckner <reid@kleckner.net> Remove some std stream usage from Support and TableGen

LLVM's coding standards recommend raw_ostream and MemoryBuffer for
reading and writing text.

This has the side effect of allowing clang to compile more of Support
and TableGen in the Microsoft C++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
4717fd4c0faf454ff37f133709320d0cfec0da89 24-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow TableGen DAG arguments to be just a name.

DAG arguments can optionally be named:

(dag node, node:$name)

With this change, the node is also optional:

(dag node, node:$name, $name)

The missing node is treated as an UnsetInit, so the above is equivalent
to:

(dag node, node:$name, ?:$name)

This syntax is useful in output patterns where we currently require the
types of variables to be repeated:

def : Pat<(subc i32:$b, i32:$c), (SUBCCrr i32:$b, i32:$c)>;

This is preferable:

def : Pat<(subc i32:$b, i32:$c), (SUBCCrr $b, $c)>;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177843 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
f15fe8195b0a42d0e950f3694c4d6ccd4034804a 26-Feb-2013 Michael J. Spencer <bigcheesegs@gmail.com> [TableGen] Fix ICE on MSVC 2012 Release builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176125 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
d23a41c153712b929bd84f5e713bda5db5d6e66d 25-Jan-2013 Hal Finkel <hfinkel@anl.gov> Add an addition operator to TableGen

This adds an !add(a, b) operator to tablegen; this will be used
to cleanup the PPC register definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173445 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
b50df4a3df6db2ace3c011267934d3d10bdcc8db 10-Jan-2013 Jordan Rose <jordan_rose@apple.com> TableGen: Keep track of superclass reference ranges.

def foo : bar;
~~~

This allows us to produce more precise diagnostics about a certain
superclass, and even provide fixits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
d122009e57217bd574703c46dd14b1a9235ed0b7 10-Jan-2013 Jordan Rose <jordan_rose@apple.com> TableGen: record anonymous instantiations of classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172084 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
699b8705563a62cbe2f56594144001a6c9639c2e 09-Jan-2013 Sean Silva <silvas@purdue.edu> tblgen: use an early return to reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
9cceede447118852df76e340252387d1a2cce37d 09-Jan-2013 Sean Silva <silvas@purdue.edu> tblgen: Factor out common code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
7be9021754559956f7a079d6063b58a36e5bf2fb 09-Jan-2013 Sean Silva <silvas@purdue.edu> Inline this into its only caller.

It's clearer and additionally this gets rid of the usage of `DefmID`,
which doesn't really correspond to anything in the language (it was just
used in the name of this parsing function which parsed a `MultiClassID`
and returned that multiclass's record).

This area of the code still needs a lot of work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
9d4a6610765c3466642397299271ae904d0d73f9 09-Jan-2013 Sean Silva <silvas@purdue.edu> tblgen: Reuse function that is 2 lines above.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
36febfd70e1a28d6008d45a753da4c75fd994140 09-Jan-2013 Sean Silva <silvas@purdue.edu> fix copy-paste-o

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
9302dcc91458f9d6c8005934f1180ead4427aaba 09-Jan-2013 Sean Silva <silvas@purdue.edu> docs: Bring TableGen syntax a bit closer to reality.

It's not just def's but actually a limited subset of Object's that are
allowed inside a multiclass.

Spotted by Joel Jones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171935 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
6a59f5ade8e13e323affe09d5a22df7d146ae259 07-Jan-2013 Craig Topper <craig.topper@gmail.com> Revert r171140. We don't actually need to support #NAME. Because NAME by itself is interpreted just fine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
025c5de9bac36e98340944e29fa316e53002e354 27-Dec-2012 Craig Topper <craig.topper@gmail.com> Update tablegen parser to allow defm names to start with #NAME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
3f7b7f8ce0b050fc6a0100839d9c5a84198b2aed 10-Oct-2012 Sean Silva <silvas@purdue.edu> tblgen: Use semantically correct RTTI functions.

Also, some minor cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
6cfc806a6b82b60a3e923b6b89f2b4da62cdb50b 10-Oct-2012 Sean Silva <silvas@purdue.edu> tblgen: Mechanically move dynamic_cast<> to dyn_cast<>.

Some of these dyn_cast<>'s would be better phrased as isa<> or cast<>.
That will happen in a future patch.

There are also two dyn_cast_or_null<>'s slipped in instead of
dyn_cast<>'s, since they were causing crashes with just dyn_cast<>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
80d94e053a384f83075b55c3f62ccc91caf93d18 09-Oct-2012 Sean Silva <silvas@purdue.edu> tblgen: Remove pointless method call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
736ceace11249da645ec4ed91b8714832193ead4 05-Oct-2012 Sean Silva <silvas@purdue.edu> tblgen: Replace uses of dynamic_cast<XXXRecTy> with dyn_cast<>.

This is a mechanical change of dynamic_cast<> to dyn_cast<>. A number of
these uses are actually more like isa<> or cast<>, and will be changed
to the semanticaly appropriate one in a future patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
307525cd24c3b9c081ddb3c34a3418f2875cd556 07-Sep-2012 Michael Liao <michael.liao@intel.com> Re-work bit/bits value resolving in tblgen

- This patch is inspired by the failure of the following code snippet
which is used to convert enumerable values into encoding bits to
improve the readability of td files.

class S<int s> {
bits<2> V = !if(!eq(s, 8), {0, 0},
!if(!eq(s, 16), {0, 1},
!if(!eq(s, 32), {1, 0},
!if(!eq(s, 64), {1, 1}, {?, ?}))));
}

Later, PR8330 is found to report not exactly the same bug relevant
issue to bit/bits values.

- Instead of resolving bit/bits values separately through
resolveBitReference(), this patch adds getBit() for all Inits and
resolves bit value by resolving plus getting the specified bit. This
unifies the resolving of bit with other values and removes redundant
logic for resolving bit only. In addition,
BitsInit::resolveReferences() is optimized to take advantage of this
origanization by resolving VarBitInit's variable reference first and
then getting bits from it.

- The type interference in '!if' operator is revised to support possible
combinations of int and bits/bit in MHS and RHS.

- As there may be illegal assignments from integer value to bit, says
assign 2 to a bit, but we only check this during instantiation in some
cases, e.g.

bit V = !if(!eq(x, 17), 0, 2);

Verbose diagnostic message is generated when invalid value is
resolveed to help locating the error.

- PR8330 is fixed as well.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163360 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
376a8a773e38fdcd9102a40e08ab1e0661d645d9 23-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the location of expanded multiclass defs in TableGen errors.

When reporting an error for a defm, we would previously only report the
location of the outer defm, which is not always where the error is.

Now we also print the location of the expanded multiclass defs:

lib/Target/X86/X86InstrSSE.td:2902:12: error: foo
defm ADD : basic_sse12_fp_binop_s<0x58, "add", fadd, SSE_ALU_ITINS_S>,
^
lib/Target/X86/X86InstrSSE.td:2801:11: note: instantiated from multiclass
defm PD : sse12_fp_packed<opc, !strconcat(OpcodeStr, "pd"), OpNode, VR128,
^
lib/Target/X86/X86InstrSSE.td:194:5: note: instantiated from multiclass
def rm : PI<opc, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
^

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
cfbda4a04dacaf976505c54a5308f6954b3b9a58 02-Aug-2012 Jim Grosbach <grosbach@apple.com> TableGen: Allow use of #NAME# outside of 'def' names.

Previously, def NAME values were only populated, and references to NAME
resolved, when NAME was referenced in the 'def' entry of the multiclass
sub-entry. e.g.,
multiclass foo<...> {
def prefix_#NAME : ...
}

It's useful, however, to be able to reference NAME even when the default
def name is used. For example, when a multiclass has 'def : Pat<...>'
or 'def : InstAlias<...>' entries which refer to earlier instruction
definitions in the same multiclass. e.g.,
multiclass myMulti<RegisterClass rc> {
def _r : myI<(outs rc:$d), (ins rc:$r), "r $d, $r", []>;

def : InstAlias<\"wilma $r\", (!cast<Instruction>(NAME#\"_r\") rc:$r, rc:$r)>;
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161198 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
fae8b1de47c004fefaa6c2683ae193d465b9d93f 25-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add support for range expressions in TableGen foreach loops.

Like this:

foreach i = 0-127 in ...

Use braces for composite ranges:

foreach i = {0-3,9-7} in ...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
72cba6cdf640411e2fb6207858a0abd87c4286fc 25-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't put TGParser scratch results in the output.

Only fully expanded Records should go into RecordKeeper.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157431 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
8e5286e18ffbe4716ef92cd1de8901942d685e1b 25-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify TGParser::ProcessForEachDefs.

Use static type checking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157430 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
cebb4ee93a0064e4a2cb1fd1da7455b01e5655cb 22-Feb-2012 David Greene <greened@obbligato.org> Add Foreach Loop

Add some data structures to represent for loops. These will be
referenced during object processing to do any needed iteration and
instantiation.

Add foreach keyword support to the lexer.

Add a mode to indicate that we're parsing a foreach loop. This allows
the value parser to early-out when processing the foreach value list.

Add a routine to parse foreach iteration declarations. This is
separate from ParseDeclaration because the type of the named value
(the iterator) doesn't match the type of the initializer value (the
value list). It also needs to add two values to the foreach record:
the iterator and the value list.

Add parsing support for foreach.

Add the code to process foreach loops and create defs based
on iterator values.

Allow foreach loops to be matched at the top level.

When parsing an IDValue check if it is a foreach loop iterator for one
of the active loops. If so, return a VarInit for it.

Add Emacs keyword support for foreach.

Add VIM keyword support for foreach.

Add tests to check foreach operation.

Add TableGen documentation for foreach.

Support foreach with multiple objects.

Support non-braced foreach body with one object.

Do not require types for the foreach declaration. Assume the iterator
type from the iteration list element type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151164 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
858143816d43e58b17bfd11cb1b57afbd7f0f893 07-Feb-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
1d5013992f8ecf5cc670ab8a1a599db4722c2f5d 28-Jan-2012 David Greene <greened@obbligato.org> Fix Record Name Reference

Get the record name though the init to avoid an assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
4d6ccb5f68cd7c6418a209f1fa4dbade569e4493 20-Jan-2012 David Blaikie <dblaikie@gmail.com> More dead code removal (using -Wunreachable-code)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
b1320cb38158aedd5b59e0e3649ce5d1e90c9776 20-Jan-2012 Jim Grosbach <grosbach@apple.com> TblGen diagnostic for mismatched template instantiation.

Providing a template argment to a non-templatized class was crashing
tblgen. Add a diagnostic.

For example,
$ cat bug.td
class A;

def B : A<0> {
}
$ llvm-tblgen bug.td
bug.td:3:11: error: template argument provided to non-template class
def B : A<0> {
^

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148565 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
8dd6f0c8353f80de6526810899f271d539f6929c 13-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete CodeInit and CodeRecTy from TableGen.

The code type was always identical to a string anyway. Now it is simply
a synonym. The code literal syntax [{...}] is still valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
ebaf92c67dac4974f98a08f8096d3eb2f4edd09d 13-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use uniqued StringInit pointers for lookups.

This avoids a gazillion StringMap and dynamic_cast calls, making
TableGen run 3x faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
94f2dc90a54443ea405776d6ffa2a4e27800d3d6 02-Dec-2011 Jim Grosbach <grosbach@apple.com> Check for error after InstantiateMultclassDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
d3d1cad535d1c88e13e8e082c136260ee624967f 19-Oct-2011 David Greene <greened@obbligato.org> Implement Paste

Add a paste operator '#' to take two identifier-like strings and joint
them. Internally paste gets represented as a !strconcat() with any
necessary casts to string added.

This will be used to implement basic for loop functionality as in:

for i = [0, 1, 2, 3, 4, 5, 6, 7] {
def R#i : Register<...>
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142525 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
e5b252f9fe7a3dfc85ae25ca1603cb406071851b 19-Oct-2011 David Greene <greened@obbligato.org> Process NAME

During multiclass def instantiation, replace NAME in any expressions
with the value of the def or defm ID.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
7be867e48300861b7b1bf614eb204463533d6724 19-Oct-2011 David Greene <greened@obbligato.org> Process Defm Prefix as Init

Parse and process a defm prefix as an Init expression. This allows
paste operations to create defm prefixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
a9e07dd66dcd951900f9e360fafc1ea30edcc9cd 19-Oct-2011 David Greene <greened@obbligato.org> Parse Def ID as Value

Allow def and defm IDs to be general values. We need this for paste
functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
8592b2b2a3dde4e5c8f00e855497f760ae94272f 19-Oct-2011 David Greene <greened@obbligato.org> Don't Parse Object Body as a Name

Stop parsing a value if we are in name parsing mode and we see a left
brace. A left brace indicates the start of an object body when we are
parsing a name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142521 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
bbec279d8eb0d7e27c2bf6e4da4f44286451d142 19-Oct-2011 David Greene <greened@obbligato.org> Use Parse Mode

Augment the value parser to respect the parse mode and not error if an
ID doesn't map to an object and we are in name parsing mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
f3744a0cf9f622e0879a80c1fdcb0f6072e5a6c3 19-Oct-2011 David Greene <greened@obbligato.org> Make ID Parsing More Flexible

Add a mode control to value and ID parsers. The two modes are:

- Parse a value. Expect the parsed ID to map to an existing object.

- Parse a name. Expect the parsed ID to not map to any existing object.

The first is used when parsing an identifier to be looked up, for
example a record field or template argument. The second is used for
parsing declarations. Paste functionality implies that declarations
can contain arbitrary expressions so we need to be able to call into
the general value parser to parse declarations with paste operators.
So we need a way to parse a value-like thing without expecting that
the result will map to some existing object. This parse mode provides
that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142519 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
e338565757bfcfe9d762751c976684f66954fb45 19-Oct-2011 David Greene <greened@obbligato.org> Add NAME Member

Add a Value named "NAME" to each Record. This will be set to the def or defm
name when instantiating multiclasses. This will replace the #NAME# processing
hack once paste functionality is in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
22dde7e655b76f75bf11e86129410a7dcbfac3ba 19-Oct-2011 David Greene <greened@obbligato.org> Fix Name Access

Get the Record name as a string explicitly to avoid asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142517 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
69a2394b2dd0136581f1485d69669246fc3b62c5 19-Oct-2011 David Greene <greened@obbligato.org> Fix Name Access

Get the Record name as a string explicitly to avoid asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142516 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
91919cd8166bb60145efe54dd790b98521b4328a 19-Oct-2011 David Greene <greened@obbligato.org> Fix Name Access

Get the Record name as a string explicitly to avoid asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142515 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
2c49fbb32c5f042ecf64ac415f1a628100951a44 19-Oct-2011 David Greene <greened@obbligato.org> Fix Name Access

Get the Record name by string explicitly to avoid potential asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
e22b321d2276b634519165b101b02d92c2fcf5c7 19-Oct-2011 David Greene <greened@obbligato.org> Make Template Arg Names Inits

Allow template arg names to be Inits. This is further work to
implement paste as it allows template names to participate in paste
operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
917924d9912df76ba2e639c8c5b00cdcac91a16e 19-Oct-2011 David Greene <greened@obbligato.org> Let SetValue Take and Init Name

Convert SetValue to take the value name as an Init. This allows us to
set values for variables whose names are not yet fully resolved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142499 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
a1b1b79be15c4b79a4282f148085ebad1cf877ca 07-Oct-2011 David Greene <greened@obbligato.org> Remove Multidefs

Multidefs are a bit unwieldy and incomplete. Remove them in favor of
another mechanism, probably for loops.

Revert "Make Test More Thorough"
Revert "Fix a typo."
Revert "Vim Support for Multidefs"
Revert "Emacs Support for Multidefs"
Revert "Document Multidefs"
Revert "Add a Multidef Test"
Revert "Update Test for Multidefs"
Revert "Process Multidefs"
Revert "Parser Multidef Support"
Revert "Lexer Support for Multidefs"
Revert "Add Multidef Data Structures"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141378 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
caa25c81cd12f8a25b6cb7a3cba865a0dbcd4eaf 06-Oct-2011 David Greene <greened@obbligato.org> Prefix Template Arg Names with Multiclass Name

For consistency, prefix multiclass template arg names with the
multiclass name followed by "::" to avoid name clashes among
multiclass arguments and other entities in the multiclass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141239 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
a6d442e65179092542d161679414b1e4e063ec4d 06-Oct-2011 David Greene <greened@obbligato.org> Process Multidefs

Process each multidef declared in a multiclass. Iterate through the
list and instantiate a def in the multiclass for each item, resolving
the list item to the temporary iterator (possibly) used in the
multidef ObjectBody. We then process each generated def in the normal
way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141233 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
6da674cda1587c9b09e01f65219cec54f54d90b8 06-Oct-2011 David Greene <greened@obbligato.org> Parser Multidef Support

Add parser support to recognize multidefs. No processing on the
multidef is done at this point. The grammar is:

MultiDef = MULTIDEF ObjectName < Value, Declaration, Value > ObjectBody

The first Value must be resolveable to a list and the second Value
must be resolveable to an integer. The Declaration is a temporary
value used as an iterator to refer to list items during processing.
It may be passed into the ObjectBody where it will be substituted with
the list value used to instantiate each def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141232 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
e499a2df4492dab21a50d74f3f687b989f910a2f 06-Oct-2011 David Greene <greened@obbligato.org> Refactor Multiclass Def Processing

Move the code to instantiate a multiclass def, bind its arguments and
resolve its members into three helper functions. These will be reused
to support a new kind of multiclass def: a multidef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp
7c788888872233748da10a8177a9a1eb176c1bc8 01-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Move TableGen's parser and entry point into a library

This is the first step towards splitting LLVM and Clang's tblgen executables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/TableGen/TGParser.cpp