From: Jean Perier Date: Thu, 30 Sep 2021 21:16:29 +0000 (+0200) Subject: [flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol X-Git-Tag: upstream/15.0.7~29987 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fdcbb540fc5ffbf5faa03c2f10fa88ca2c38f845;p=platform%2Fupstream%2Fllvm.git [flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol Helps debugging when working with symbol/expression issue. The dump method is easy to call in the debugger. Co-authored-by: Eric Schweitz Differential Revision: https://reviews.llvm.org/D110856 --- diff --git a/flang/include/flang/Evaluate/expression.h b/flang/include/flang/Evaluate/expression.h index ea68f6e..c33c242 100644 --- a/flang/include/flang/Evaluate/expression.h +++ b/flang/include/flang/Evaluate/expression.h @@ -93,6 +93,9 @@ public: std::optional GetType() const; int Rank() const; std::string AsFortran() const; +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) + LLVM_DUMP_METHOD void dump() const; +#endif llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const; static Derived Rewrite(FoldingContext &, Derived &&); }; diff --git a/flang/include/flang/Semantics/symbol.h b/flang/include/flang/Semantics/symbol.h index b287b91..2282d2b 100644 --- a/flang/include/flang/Semantics/symbol.h +++ b/flang/include/flang/Semantics/symbol.h @@ -657,6 +657,9 @@ public: const DerivedTypeSpec *GetParentTypeSpec(const Scope * = nullptr) const; SemanticsContext &GetSemanticsContext() const; +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) + LLVM_DUMP_METHOD void dump() const; +#endif private: const Scope *owner_; diff --git a/flang/lib/Evaluate/expression.cpp b/flang/lib/Evaluate/expression.cpp index c08e977..576e330 100644 --- a/flang/lib/Evaluate/expression.cpp +++ b/flang/lib/Evaluate/expression.cpp @@ -111,6 +111,12 @@ DynamicType Parentheses::GetType() const { return left().GetType().value(); } +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) +template LLVM_DUMP_METHOD void ExpressionBase::dump() const { + llvm::errs() << "Expr is <{" << AsFortran() << "}>\n"; +} +#endif + // Equality testing bool ImpliedDoIndex::operator==(const ImpliedDoIndex &that) const { diff --git a/flang/lib/Semantics/symbol.cpp b/flang/lib/Semantics/symbol.cpp index 60e4572..78074c3 100644 --- a/flang/lib/Semantics/symbol.cpp +++ b/flang/lib/Semantics/symbol.cpp @@ -535,6 +535,10 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &os, const Symbol &symbol) { return os; } +#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) +void Symbol::dump() const { llvm::errs() << *this << '\n'; } +#endif + // Output a unique name for a scope by qualifying it with the names of // parent scopes. For scopes without corresponding symbols, use the kind // with an index (e.g. Block1, Block2, etc.).