diff options
-rw-r--r-- | lib/TableGen/TGParser.cpp | 2 | ||||
-rw-r--r-- | lib/TableGen/TGParser.h | 2 | ||||
-rw-r--r-- | test/TableGen/MultiClassDefName.td | 15 |
3 files changed, 17 insertions, 2 deletions
diff --git a/lib/TableGen/TGParser.cpp b/lib/TableGen/TGParser.cpp index 38ab71184a..be5a524251 100644 --- a/lib/TableGen/TGParser.cpp +++ b/lib/TableGen/TGParser.cpp @@ -2269,7 +2269,7 @@ bool TGParser::ParseMultiClass() { Record *TGParser:: InstantiateMulticlassDef(MultiClass &MC, Record *DefProto, - Init *DefmPrefix, + Init *&DefmPrefix, SMRange DefmPrefixRange) { // We need to preserve DefProto so it can be reused for later // instantiations, so create a new Record to inherit from it. diff --git a/lib/TableGen/TGParser.h b/lib/TableGen/TGParser.h index a575345810..e5559a33e3 100644 --- a/lib/TableGen/TGParser.h +++ b/lib/TableGen/TGParser.h @@ -137,7 +137,7 @@ private: // Parser methods. bool ParseMultiClass(); Record *InstantiateMulticlassDef(MultiClass &MC, Record *DefProto, - Init *DefmPrefix, + Init *&DefmPrefix, SMRange DefmPrefixRange); bool ResolveMulticlassDefArgs(MultiClass &MC, Record *DefProto, diff --git a/test/TableGen/MultiClassDefName.td b/test/TableGen/MultiClassDefName.td index d3c6de7e84..69b951d378 100644 --- a/test/TableGen/MultiClassDefName.td +++ b/test/TableGen/MultiClassDefName.td @@ -14,3 +14,18 @@ multiclass Names<string n, string m> { } defm Hello : Names<"hello", "world">; + +// Ensure that the same anonymous name is used as the prefix for all defs in an +// anonymous multiclass. + +class Outer<C i> { + C Inner = i; +} + +multiclass MC<string name> { + def hi : C<name>; + def there : Outer<!cast<C>(!strconcat(NAME, "hi"))>; +} + +defm : MC<"foo">; + |