mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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
This commit is contained in:
@@ -760,7 +760,9 @@ Init *UnOpInit::Fold(Record *CurRec, MultiClass *CurMultiClass) const {
|
||||
return VarInit::get(Name, RV->getType());
|
||||
}
|
||||
|
||||
std::string TemplateArgName = CurRec->getName()+":"+Name;
|
||||
Init *TemplateArgName = QualifyName(*CurRec, CurMultiClass, Name,
|
||||
":");
|
||||
|
||||
if (CurRec->isTemplateArg(TemplateArgName)) {
|
||||
const RecordVal *RV = CurRec->getValue(TemplateArgName);
|
||||
assert(RV && "Template arg doesn't exist??");
|
||||
@@ -773,7 +775,8 @@ Init *UnOpInit::Fold(Record *CurRec, MultiClass *CurMultiClass) const {
|
||||
}
|
||||
|
||||
if (CurMultiClass) {
|
||||
std::string MCName = CurMultiClass->Rec.getName()+"::"+Name;
|
||||
Init *MCName = QualifyName(CurMultiClass->Rec, CurMultiClass, Name, "::");
|
||||
|
||||
if (CurMultiClass->Rec.isTemplateArg(MCName)) {
|
||||
const RecordVal *RV = CurMultiClass->Rec.getValue(MCName);
|
||||
assert(RV && "Template arg doesn't exist??");
|
||||
@@ -1765,7 +1768,7 @@ void Record::dump() const { errs() << *this; }
|
||||
raw_ostream &llvm::operator<<(raw_ostream &OS, const Record &R) {
|
||||
OS << R.getName();
|
||||
|
||||
const std::vector<std::string> &TArgs = R.getTemplateArgs();
|
||||
const std::vector<Init *> &TArgs = R.getTemplateArgs();
|
||||
if (!TArgs.empty()) {
|
||||
OS << "<";
|
||||
for (unsigned i = 0, e = TArgs.size(); i != e; ++i) {
|
||||
|
||||
Reference in New Issue
Block a user