diff options
| author | Alexis Hunt <alercah@gmail.com> | 2012-06-19 13:36:02 +0000 |
|---|---|---|
| committer | Alexis Hunt <alercah@gmail.com> | 2012-06-19 13:36:02 +0000 |
| commit | abc99d8d04ea9cb4895b11a6b272e08ab18e75a3 (patch) | |
| tree | e7235fdfb898256267903bc46574250a2adf03e7 /clang/utils | |
| parent | 6bf4417261bf36746ee8a465352c9ceb1040aa4d (diff) | |
| download | bcm5719-llvm-abc99d8d04ea9cb4895b11a6b272e08ab18e75a3.tar.gz bcm5719-llvm-abc99d8d04ea9cb4895b11a6b272e08ab18e75a3.zip | |
Stop abusing StringRef. Fixes the Windows build.
I've also removed the duplicate check for PARSED_ATTR since it seems
unnecessary, and would have made the code more complicated.
llvm-svn: 158716
Diffstat (limited to 'clang/utils')
| -rw-r--r-- | clang/utils/TableGen/ClangAttrEmitter.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/clang/utils/TableGen/ClangAttrEmitter.cpp b/clang/utils/TableGen/ClangAttrEmitter.cpp index 61f07e2db79..0df566f7123 100644 --- a/clang/utils/TableGen/ClangAttrEmitter.cpp +++ b/clang/utils/TableGen/ClangAttrEmitter.cpp @@ -966,7 +966,8 @@ void EmitClangAttrSpellingList(RecordKeeper &Records, raw_ostream &OS) { std::vector<Record*> Spellings = Attr.getValueAsListOfDefs("Spellings"); for (std::vector<Record*>::const_iterator I = Spellings.begin(), E = Spellings.end(); I != E; ++I) { - StringRef Spelling = (*I)->getValueAsString("Name"); + SmallString<64> Spelling; + Spelling += (*I)->getValueAsString("Name"); OS << ".Case(\"" << Spelling << "\", true)\n"; } } @@ -1074,6 +1075,9 @@ void EmitClangAttrTemplateInstantiate(RecordKeeper &Records, raw_ostream &OS) { << "} // end namespace clang\n"; } +} +#include <cstdio> +namespace clang { // Emits the list of parsed attributes. void EmitClangAttrParsedAttrList(RecordKeeper &Records, raw_ostream &OS) { OS << "// This file is generated by TableGen. Do not edit.\n\n"; @@ -1083,7 +1087,6 @@ void EmitClangAttrParsedAttrList(RecordKeeper &Records, raw_ostream &OS) { OS << "#endif\n\n"; std::vector<Record*> Attrs = Records.getAllDerivedDefinitions("Attr"); - std::set<StringRef> ProcessedAttrs; for (std::vector<Record*>::iterator I = Attrs.begin(), E = Attrs.end(); I != E; ++I) { @@ -1098,16 +1101,12 @@ void EmitClangAttrParsedAttrList(RecordKeeper &Records, raw_ostream &OS) { for (std::vector<Record*>::const_iterator I = Spellings.begin(), E = Spellings.end(); I != E; ++I) { - StringRef AttrName = (*I)->getValueAsString("Name"); + SmallString<64> AttrName; + AttrName += (*I)->getValueAsString("Name"); - AttrName = NormalizeAttrName(AttrName); - // skip if a normalized version has been processed. - if (ProcessedAttrs.find(AttrName) != ProcessedAttrs.end()) - continue; - else - ProcessedAttrs.insert(AttrName); + StringRef Spelling = NormalizeAttrName(AttrName); - OS << "PARSED_ATTR(" << AttrName << ")\n"; + OS << "PARSED_ATTR(" << Spelling << ")\n"; } } else { StringRef AttrName = Attr.getName(); @@ -1138,9 +1137,10 @@ void EmitClangAttrParsedAttrKinds(RecordKeeper &Records, raw_ostream &OS) { for (std::vector<Record*>::const_iterator I = Spellings.begin(), E = Spellings.end(); I != E; ++I) { - StringRef RawSpelling = (*I)->getValueAsString("Name"); + SmallString<64> RawSpelling; + RawSpelling += (*I)->getValueAsString("Name"); StringRef AttrName = NormalizeAttrName(DistinctSpellings - ? RawSpelling + ? StringRef(RawSpelling) : StringRef(Attr.getName())); SmallString<64> Spelling; |

