diff options
author | Youngsuk Kim <youngsuk.kim@hpe.com> | 2024-09-17 11:56:40 -0500 |
---|---|---|
committer | Youngsuk Kim <youngsuk.kim@hpe.com> | 2024-09-17 12:20:21 -0500 |
commit | d5dd7d230ecaf8242f4429a5e3653e16bf55bcd6 (patch) | |
tree | 0d7441497468abdf3e67566065f599c9fa2d689a | |
parent | 64972834c193632cbc47e54c0f0c721636b077e6 (diff) | |
download | llvm-d5dd7d230ecaf8242f4429a5e3653e16bf55bcd6.zip llvm-d5dd7d230ecaf8242f4429a5e3653e16bf55bcd6.tar.gz llvm-d5dd7d230ecaf8242f4429a5e3653e16bf55bcd6.tar.bz2 |
[flang] Tidy uses of raw_string_ostream (NFC)
As specified in the docs,
1) raw_string_ostream is always unbuffered and
2) the underlying buffer may be used directly
( 65b13610a5226b84889b923bae884ba395ad084d for further reference )
Avoid unneeded calls to raw_string_ostream::str(), to avoid excess indirection.
-rw-r--r-- | flang/include/flang/Parser/dump-parse-tree.h | 2 | ||||
-rw-r--r-- | flang/lib/Evaluate/formatting.cpp | 4 | ||||
-rw-r--r-- | flang/lib/Parser/prescan.cpp | 2 | ||||
-rw-r--r-- | flang/lib/Semantics/expression.cpp | 5 | ||||
-rw-r--r-- | flang/lib/Semantics/pointer-assignment.cpp | 2 | ||||
-rw-r--r-- | flang/lib/Semantics/scope.cpp | 2 | ||||
-rw-r--r-- | flang/lib/Semantics/tools.cpp | 2 | ||||
-rw-r--r-- | flang/lib/Semantics/type.cpp | 8 | ||||
-rw-r--r-- | flang/unittests/Evaluate/real.cpp | 14 | ||||
-rw-r--r-- | flang/unittests/Frontend/CodeGenActionTest.cpp | 2 | ||||
-rw-r--r-- | flang/unittests/Frontend/CompilerInstanceTest.cpp | 2 |
11 files changed, 21 insertions, 24 deletions
diff --git a/flang/include/flang/Parser/dump-parse-tree.h b/flang/include/flang/Parser/dump-parse-tree.h index 37c3370..0b4ebcb 100644 --- a/flang/include/flang/Parser/dump-parse-tree.h +++ b/flang/include/flang/Parser/dump-parse-tree.h @@ -875,7 +875,7 @@ protected: ss << x; } if (ss.tell()) { - return ss.str(); + return buf; } if constexpr (std::is_same_v<T, Name>) { return x.source.ToString(); diff --git a/flang/lib/Evaluate/formatting.cpp b/flang/lib/Evaluate/formatting.cpp index 0870d565..3581b9c 100644 --- a/flang/lib/Evaluate/formatting.cpp +++ b/flang/lib/Evaluate/formatting.cpp @@ -563,7 +563,7 @@ std::string ExpressionBase<RESULT>::AsFortran() const { std::string buf; llvm::raw_string_ostream ss{buf}; AsFortran(ss); - return ss.str(); + return buf; } template <typename RESULT> @@ -604,7 +604,7 @@ static std::string DerivedTypeSpecAsFortran( if (ch != '(') { ss << ')'; } - return ss.str(); + return buf; } llvm::raw_ostream &StructureConstructor::AsFortran(llvm::raw_ostream &o) const { diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp index b594df8..b231c58 100644 --- a/flang/lib/Parser/prescan.cpp +++ b/flang/lib/Parser/prescan.cpp @@ -1098,7 +1098,7 @@ void Prescanner::FortranInclude(const char *firstQuote) { const SourceFile *included{ allSources_.Open(path, error, std::move(prependPath))}; if (!included) { - Say(provenance, "INCLUDE: %s"_err_en_US, error.str()); + Say(provenance, "INCLUDE: %s"_err_en_US, buf); } else if (included->bytes() > 0) { ProvenanceRange includeLineRange{ provenance, static_cast<std::size_t>(p - nextLine_)}; diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp index 072ebe1..182ea5d 100644 --- a/flang/lib/Semantics/expression.cpp +++ b/flang/lib/Semantics/expression.cpp @@ -3223,7 +3223,7 @@ void ExpressionAnalyzer::Analyze(const parser::CallStmt &callStmt) { llvm::raw_string_ostream dump{buf}; parser::DumpTree(dump, callStmt); Say("Internal error: Expression analysis failed on CALL statement: %s"_err_en_US, - dump.str()); + buf); } } } @@ -3847,8 +3847,7 @@ MaybeExpr ExpressionAnalyzer::ExprOrVariable( std::string buf; llvm::raw_string_ostream dump{buf}; parser::DumpTree(dump, x); - Say("Internal error: Expression analysis failed on: %s"_err_en_US, - dump.str()); + Say("Internal error: Expression analysis failed on: %s"_err_en_US, buf); } return std::nullopt; } diff --git a/flang/lib/Semantics/pointer-assignment.cpp b/flang/lib/Semantics/pointer-assignment.cpp index 4948fce..2813a0c 100644 --- a/flang/lib/Semantics/pointer-assignment.cpp +++ b/flang/lib/Semantics/pointer-assignment.cpp @@ -353,7 +353,7 @@ bool PointerAssignmentChecker::Check(const evaluate::Designator<T> &d) { std::string buf; llvm::raw_string_ostream ss{buf}; d.AsFortran(ss); - Say(*m, description_, ss.str()); + Say(*m, description_, buf); } else { Say(std::get<MessageFormattedText>(*msg)); } diff --git a/flang/lib/Semantics/scope.cpp b/flang/lib/Semantics/scope.cpp index 89128e4..6ee53cd 100644 --- a/flang/lib/Semantics/scope.cpp +++ b/flang/lib/Semantics/scope.cpp @@ -47,7 +47,7 @@ std::string EquivalenceObject::AsFortran() const { if (substringStart) { ss << '(' << *substringStart << ":)"; } - return ss.str(); + return buf; } Scope &Scope::MakeScope(Kind kind, Symbol *symbol) { diff --git a/flang/lib/Semantics/tools.cpp b/flang/lib/Semantics/tools.cpp index 8d16ab7..3723b28 100644 --- a/flang/lib/Semantics/tools.cpp +++ b/flang/lib/Semantics/tools.cpp @@ -440,7 +440,7 @@ static void CheckMissingAnalysis( llvm::raw_string_ostream ss{buf}; ss << "node has not been analyzed:\n"; parser::DumpTree(ss, x); - common::die(ss.str().c_str()); + common::die(buf.c_str()); } } diff --git a/flang/lib/Semantics/type.cpp b/flang/lib/Semantics/type.cpp index aa6e897..810b982 100644 --- a/flang/lib/Semantics/type.cpp +++ b/flang/lib/Semantics/type.cpp @@ -658,7 +658,7 @@ std::string DerivedTypeSpec::VectorTypeAsFortran() const { case (Fortran::semantics::DerivedTypeSpec::Category::DerivedType): Fortran::common::die("Vector element type not implemented"); } - return ss.str(); + return buf; } std::string DerivedTypeSpec::AsFortran() const { @@ -694,7 +694,7 @@ std::string DerivedTypeSpec::AsFortran() const { } ss << ')'; } - return ss.str(); + return buf; } llvm::raw_ostream &operator<<(llvm::raw_ostream &o, const DerivedTypeSpec &x) { @@ -771,7 +771,7 @@ std::string ParamValue::AsFortran() const { std::string buf; llvm::raw_string_ostream ss{buf}; expr_->AsFortran(ss); - return ss.str(); + return buf; } else { return ""; } @@ -795,7 +795,7 @@ static std::string KindAsFortran(const KindExpr &kind) { } else { kind.AsFortran(ss); } - return ss.str(); + return buf; } std::string IntrinsicTypeSpec::AsFortran() const { diff --git a/flang/unittests/Evaluate/real.cpp b/flang/unittests/Evaluate/real.cpp index ccbaf81..a6152d3 100644 --- a/flang/unittests/Evaluate/real.cpp +++ b/flang/unittests/Evaluate/real.cpp @@ -158,10 +158,9 @@ template <typename R> void basicTests(int rm, Rounding rounding) { TEST(ivf.flags.empty())(ldesc); MATCH(x, ivf.value.ToUInt64())(ldesc); if (rounding.mode == RoundingMode::TiesToEven) { // to match stold() - std::string buf; - llvm::raw_string_ostream ss{buf}; + std::string decimal; + llvm::raw_string_ostream ss{decimal}; vr.value.AsFortran(ss, kind, false /*exact*/); - std::string decimal{ss.str()}; const char *p{decimal.data()}; MATCH(x, static_cast<std::uint64_t>(std::stold(decimal))) ("%s %s", ldesc, p); @@ -424,14 +423,13 @@ void subsetTests(int pass, Rounding rounding, std::uint32_t opds) { ("%d IsInfinite(0x%jx)", pass, static_cast<std::intmax_t>(rj)); static constexpr int kind{REAL::bits / 8}; - std::string ssBuf, cssBuf; - llvm::raw_string_ostream ss{ssBuf}; + std::string s, cssBuf; + llvm::raw_string_ostream ss{s}; llvm::raw_string_ostream css{cssBuf}; x.AsFortran(ss, kind, false /*exact*/); - std::string s{ss.str()}; if (IsNaN(rj)) { css << "(0._" << kind << "/0.)"; - MATCH(css.str(), s) + MATCH(cssBuf, s) ("%d invalid(0x%jx)", pass, static_cast<std::intmax_t>(rj)); } else if (IsInfinite(rj)) { css << '('; @@ -439,7 +437,7 @@ void subsetTests(int pass, Rounding rounding, std::uint32_t opds) { css << '-'; } css << "1._" << kind << "/0.)"; - MATCH(css.str(), s) + MATCH(cssBuf, s) ("%d overflow(0x%jx)", pass, static_cast<std::intmax_t>(rj)); } else { const char *p = s.data(); diff --git a/flang/unittests/Frontend/CodeGenActionTest.cpp b/flang/unittests/Frontend/CodeGenActionTest.cpp index 9d798c7..5d75de0 100644 --- a/flang/unittests/Frontend/CodeGenActionTest.cpp +++ b/flang/unittests/Frontend/CodeGenActionTest.cpp @@ -103,7 +103,7 @@ TEST(CodeGenAction, GracefullyHandleLLVMConversionFailure) { action.setCurrentInput(file); consumeError(action.execute()); - ASSERT_EQ(diagnosticsOS.str(), + ASSERT_EQ(diagnosticOutput, "error: Lowering to LLVM IR failed\n" "error: failed to create the LLVM module\n"); } diff --git a/flang/unittests/Frontend/CompilerInstanceTest.cpp b/flang/unittests/Frontend/CompilerInstanceTest.cpp index 35f1ec1..3fe2f06 100644 --- a/flang/unittests/Frontend/CompilerInstanceTest.cpp +++ b/flang/unittests/Frontend/CompilerInstanceTest.cpp @@ -90,6 +90,6 @@ TEST(CompilerInstance, AllowDiagnosticLogWithUnownedDiagnosticConsumer) { // 6. Verify that the reported diagnostic wasn't lost and did end up in the // output stream - ASSERT_EQ(diagnosticsOS.str(), "error: expected no crash\n"); + ASSERT_EQ(diagnosticOutput, "error: expected no crash\n"); } } // namespace |