[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 <eschweitz@nvidia.com>

Differential Revision: https://reviews.llvm.org/D110856
This commit is contained in:
Jean Perier 2021-09-30 23:16:29 +02:00
parent a21c557955
commit fdcbb540fc
4 changed files with 16 additions and 0 deletions

View File

@ -93,6 +93,9 @@ public:
std::optional<DynamicType> 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 &&);
};

View File

@ -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_;

View File

@ -111,6 +111,12 @@ DynamicType Parentheses<SomeDerived>::GetType() const {
return left().GetType().value();
}
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
template <typename A> LLVM_DUMP_METHOD void ExpressionBase<A>::dump() const {
llvm::errs() << "Expr is <{" << AsFortran() << "}>\n";
}
#endif
// Equality testing
bool ImpliedDoIndex::operator==(const ImpliedDoIndex &that) const {

View File

@ -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.).