summaryrefslogtreecommitdiffstats
path: root/clang/utils
diff options
context:
space:
mode:
authorAlexis Hunt <alercah@gmail.com>2012-06-19 13:36:02 +0000
committerAlexis Hunt <alercah@gmail.com>2012-06-19 13:36:02 +0000
commitabc99d8d04ea9cb4895b11a6b272e08ab18e75a3 (patch)
treee7235fdfb898256267903bc46574250a2adf03e7 /clang/utils
parent6bf4417261bf36746ee8a465352c9ceb1040aa4d (diff)
downloadbcm5719-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.cpp24
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;
OpenPOWER on IntegriCloud