From caf26b9437ae3e26d4c9c8680d3e755aafeda6ed Mon Sep 17 00:00:00 2001 From: Youngsuk Kim Date: Sat, 29 Jun 2024 18:50:52 -0400 Subject: [PATCH] [llvm][utils] Avoid 'raw_string_ostream::str()' (NFC) (#97160) Since `raw_string_ostream` doesn't own the string buffer, it is desirable (in terms of memory safety) for users to directly reference the string buffer rather than use `raw_string_ostream::str()`. Work towards TODO comment to remove `raw_string_ostream::str()`. --- llvm/utils/FileCheck/FileCheck.cpp | 4 ++-- llvm/utils/TableGen/AsmMatcherEmitter.cpp | 4 ++-- llvm/utils/TableGen/AsmWriterEmitter.cpp | 12 ++++++------ llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/llvm/utils/FileCheck/FileCheck.cpp b/llvm/utils/FileCheck/FileCheck.cpp index a96251867c08..9cf3a3164dfe 100644 --- a/llvm/utils/FileCheck/FileCheck.cpp +++ b/llvm/utils/FileCheck/FileCheck.cpp @@ -641,7 +641,7 @@ static void DumpAnnotatedInput(raw_ostream &OS, const FileCheckRequest &Req, LineOS = &ElidedLinesOS; else { LineOS = &OS; - DumpEllipsisOrElidedLines(OS, ElidedLinesOS.str(), LabelWidth); + DumpEllipsisOrElidedLines(OS, ElidedLines, LabelWidth); } // Print right-aligned line number. @@ -723,7 +723,7 @@ static void DumpAnnotatedInput(raw_ostream &OS, const FileCheckRequest &Req, ++AnnotationItr; } } - DumpEllipsisOrElidedLines(OS, ElidedLinesOS.str(), LabelWidth); + DumpEllipsisOrElidedLines(OS, ElidedLines, LabelWidth); OS << ">>>>>>\n"; } diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp index 29f15f0e5733..5035ef52707f 100644 --- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp +++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp @@ -2367,10 +2367,10 @@ emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName, OS << "};\n\n"; // Spit out the conversion driver function. - OS << CvtOS.str(); + OS << ConvertFnBody; // Spit out the operand number lookup function. - OS << OpOS.str(); + OS << OperandFnBody; return ConversionTable.size(); } diff --git a/llvm/utils/TableGen/AsmWriterEmitter.cpp b/llvm/utils/TableGen/AsmWriterEmitter.cpp index 16661cd29edc..79a1c245f0fd 100644 --- a/llvm/utils/TableGen/AsmWriterEmitter.cpp +++ b/llvm/utils/TableGen/AsmWriterEmitter.cpp @@ -1162,8 +1162,8 @@ void AsmWriterEmitter::EmitPrintAliasInstruction(raw_ostream &O) { PatternCount - PatternStart); } - if (OpcodeO.str().empty()) { - O << HeaderO.str(); + if (PatternsForOpcode.empty()) { + O << Header; O << " return false;\n"; O << "}\n\n"; O << "#endif // PRINT_ALIAS_INSTR\n"; @@ -1177,15 +1177,15 @@ void AsmWriterEmitter::EmitPrintAliasInstruction(raw_ostream &O) { << " const MCSubtargetInfo &STI,\n" << " unsigned PredicateIndex);\n"; - O << HeaderO.str(); + O << Header; O.indent(2) << "static const PatternsForOpcode OpToPatterns[] = {\n"; - O << OpcodeO.str(); + O << PatternsForOpcode; O.indent(2) << "};\n\n"; O.indent(2) << "static const AliasPattern Patterns[] = {\n"; - O << PatternO.str(); + O << Patterns; O.indent(2) << "};\n\n"; O.indent(2) << "static const AliasPatternCond Conds[] = {\n"; - O << CondO.str(); + O << Conds; O.indent(2) << "};\n\n"; O.indent(2) << "static const char AsmStrings[] =\n"; for (const auto &P : AsmStrings) { diff --git a/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp b/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp index 4263d8f41715..e633dc36e234 100644 --- a/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp +++ b/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp @@ -405,7 +405,7 @@ void VarLenCodeEmitterGen::emitInstructionBaseValues( IS.indent(4) << "{/*NumBits*/0, /*Index*/0}\n };\n"; SS.indent(4) << "UINT64_C(0)\n };\n"; - OS << IS.str() << SS.str(); + OS << IndexArray << StorageArray; } std::string VarLenCodeEmitterGen::getInstructionCases(Record *R,