diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-08-09 08:19:00 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-08-09 08:19:00 +0000 |
commit | 72fa87f0cfe22faa575280dbac8dbc9225dfb12d (patch) | |
tree | 44b6984626a1f3bf291a00c1ed2133ed143ab786 /utils/TableGen | |
parent | a62b02a7ef93d1fd4e09842c43074b88f559819a (diff) | |
download | external_llvm-72fa87f0cfe22faa575280dbac8dbc9225dfb12d.zip external_llvm-72fa87f0cfe22faa575280dbac8dbc9225dfb12d.tar.gz external_llvm-72fa87f0cfe22faa575280dbac8dbc9225dfb12d.tar.bz2 |
llvm-mc/AsmParser: Add hack to ignore Int_* and *_Int instructions for now, to
make it easier to see interesting ambiguities.
- Also, check that user doesn't try to redefine the super class. This is a wart
in the current design, in that assembler match classes aren't explicitly
declared somewhere (so there isn't a unique place to declare the super
class). This should probably be fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78532 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen')
-rw-r--r-- | utils/TableGen/AsmMatcherEmitter.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp index f645854..a13bc4e 100644 --- a/utils/TableGen/AsmMatcherEmitter.cpp +++ b/utils/TableGen/AsmMatcherEmitter.cpp @@ -225,6 +225,12 @@ static bool IsAssemblerInstruction(const StringRef &Name, if (Name == "PHI") return false; + // Ignore "Int_*" and "*_Int" instructions, which are internal aliases. + // + // FIXME: This is a total hack. + if (StringRef(Name).startswith("Int_") || StringRef(Name).endswith("_Int")) + return false; + // Ignore instructions with no .s string. // // FIXME: What are these? @@ -571,6 +577,7 @@ AsmMatcherInfo::getOperandClass(const StringRef &Token, Entry = new ClassInfo(); if (ClassName == "Reg") { Entry->Kind = ClassInfo::Register; + Entry->SuperClassKind = SuperClass; } else { Entry->Kind = getUserClassKind(ClassName); Entry->SuperClassKind = SuperClass; @@ -581,6 +588,10 @@ AsmMatcherInfo::getOperandClass(const StringRef &Token, Entry->PredicateMethod = "is" + ClassName; Entry->RenderMethod = "add" + ClassName + "Operands"; Classes.push_back(Entry); + } else { + // Verify the super class matches. + assert(SuperClass == Entry->SuperClassKind && + "Cannot redefine super class kind!"); } return Entry; |