9#ifndef FORTRAN_LOWER_DUMPEVALUATEEXPR_H
10#define FORTRAN_LOWER_DUMPEVALUATEEXPR_H
12#include "flang/Evaluate/tools.h"
13#include "flang/Lower/Support/Utils.h"
14#include "llvm/ADT/StringRef.h"
15#include "llvm/ADT/Twine.h"
28 static void dump(
const A &x) {
32 static void dump(llvm::raw_ostream &stream,
const A &x) {
37 template <
typename A,
bool C>
46 void show(
const std::unique_ptr<A> &x) {
50 void show(
const std::shared_ptr<A> &x) {
54 void show(
const A *x) {
62 void show(
const std::optional<A> &x) {
69 template <
typename... A>
70 void show(
const std::variant<A...> &u) {
71 Fortran::common::visit([&](
const auto &v) { show(v); }, u);
74 void show(
const std::vector<A> &x) {
76 for (
const auto &v : x)
80 void show(
const Fortran::evaluate::BOZLiteralConstant &);
84 if constexpr (T::category == Fortran::common::TypeCategory::Derived) {
85 indent(
"derived constant");
86 for (
const auto &map : x.values())
87 for (
const auto &pair : map)
88 show(pair.second.value());
108 template <
typename T>
110 indent(
"designator");
114 template <
typename T>
125 indent(
"procedure ref");
130 template <
typename T>
132 indent(
"function ref");
137 template <
typename T>
141 template <
typename T>
143 indent(
"array constructor value");
148 template <
typename T>
150 indent(
"implied do");
159 show(
const Fortran::semantics::DerivedTypeSpec::ParameterMapType::value_type
162 void show(
const Fortran::evaluate::StructureConstructorValues::value_type &x);
164 template <
typename D,
typename R,
typename O>
170 template <
typename D,
typename R,
typename LO,
typename RO>
179 template <
typename T>
186 const char *getIndentString()
const;
187 void print(llvm::Twine s);
188 void indent(llvm::StringRef s);
191 llvm::raw_ostream &outs;
197LLVM_DUMP_METHOD
void dumpEvExpr(
200LLVM_DUMP_METHOD
void dumpEvExpr(
206LLVM_DUMP_METHOD
void dumpEvExpr(
Definition: indirection.h:31
Definition: expression.h:438
Definition: variable.h:208
Definition: variable.h:255
Definition: variable.h:369
Definition: variable.h:74
Definition: constant.h:141
Definition: variable.h:425
Definition: variable.h:393
Definition: expression.h:404
Definition: variable.h:104
Definition: expression.h:114
Definition: expression.h:656
Definition: static-data.h:29
Definition: expression.h:740
Definition: variable.h:316
Definition: variable.h:163
Definition: variable.h:139
Definition: DumpEvaluateExpr.h:22
Definition: AbstractConverter.h:59
Definition: expression.h:432
Definition: variable.h:51
Definition: variable.h:300
Definition: expression.h:396
Definition: expression.h:827
Definition: variable.h:194
Definition: variable.h:47