mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
On behalf of Matthew Wahab:
An instruction alias defined with InstAlias and an optional operand in the middle of the AsmString field, "..${a} <operands>", would get the final "}" printed in the instruction disassembly. This wouldn't happen if the optional operand appeared as the last item in the AsmString which is how the current backends avoided the problem. There don't appear to be any tests for this part of Tablegen but it passes the pre-commit tests. Manually tested the change by enabling the generic alias printer in the ARM backend and checking the output. Differential Revision: http://reviews.llvm.org/D6529 llvm-svn: 224348
This commit is contained in:
parent
6c3e1c0f56
commit
41308b1f31
@ -655,20 +655,26 @@ public:
|
||||
std::pair<StringRef, StringRef::iterator> parseName(StringRef::iterator Start,
|
||||
StringRef::iterator End) {
|
||||
StringRef::iterator I = Start;
|
||||
StringRef::iterator Next;
|
||||
if (*I == '{') {
|
||||
// ${some_name}
|
||||
Start = ++I;
|
||||
while (I != End && *I != '}')
|
||||
++I;
|
||||
Next = I;
|
||||
// eat the final '}'
|
||||
if (Next != End)
|
||||
++Next;
|
||||
} else {
|
||||
// $name, just eat the usual suspects.
|
||||
while (I != End &&
|
||||
((*I >= 'a' && *I <= 'z') || (*I >= 'A' && *I <= 'Z') ||
|
||||
(*I >= '0' && *I <= '9') || *I == '_'))
|
||||
++I;
|
||||
Next = I;
|
||||
}
|
||||
|
||||
return std::make_pair(StringRef(Start, I - Start), I);
|
||||
return std::make_pair(StringRef(Start, I - Start), Next);
|
||||
}
|
||||
|
||||
void print(raw_ostream &O) {
|
||||
|
Loading…
Reference in New Issue
Block a user