aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoungsuk Kim <youngsuk.kim@hpe.com>2024-09-17 11:56:40 -0500
committerYoungsuk Kim <youngsuk.kim@hpe.com>2024-09-17 12:20:21 -0500
commitd5dd7d230ecaf8242f4429a5e3653e16bf55bcd6 (patch)
tree0d7441497468abdf3e67566065f599c9fa2d689a
parent64972834c193632cbc47e54c0f0c721636b077e6 (diff)
downloadllvm-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.h2
-rw-r--r--flang/lib/Evaluate/formatting.cpp4
-rw-r--r--flang/lib/Parser/prescan.cpp2
-rw-r--r--flang/lib/Semantics/expression.cpp5
-rw-r--r--flang/lib/Semantics/pointer-assignment.cpp2
-rw-r--r--flang/lib/Semantics/scope.cpp2
-rw-r--r--flang/lib/Semantics/tools.cpp2
-rw-r--r--flang/lib/Semantics/type.cpp8
-rw-r--r--flang/unittests/Evaluate/real.cpp14
-rw-r--r--flang/unittests/Frontend/CodeGenActionTest.cpp2
-rw-r--r--flang/unittests/Frontend/CompilerInstanceTest.cpp2
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