brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · f11b5ae Raw
43 lines · cpp
1//===-- tools/f18/dump.cpp ------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// This file defines Dump routines available for calling from the debugger.10// Each is based on operator<< for that type. There are overloadings for11// reference and pointer, and for dumping to a provided raw_ostream or errs().12 13#ifdef DEBUGF1814 15#include "llvm/Support/raw_ostream.h"16 17#define DEFINE_DUMP(ns, name) \18  namespace ns { \19  class name; \20  llvm::raw_ostream &operator<<(llvm::raw_ostream &, const name &); \21  } \22  void Dump(llvm::raw_ostream &os, const ns::name &x) { os << x << '\n'; } \23  void Dump(llvm::raw_ostream &os, const ns::name *x) { \24    if (x == nullptr) \25      os << "null\n"; \26    else \27      Dump(os, *x); \28  } \29  void Dump(const ns::name &x) { Dump(llvm::errs(), x); } \30  void Dump(const ns::name *x) { Dump(llvm::errs(), *x); }31 32namespace Fortran {33DEFINE_DUMP(parser, Name)34DEFINE_DUMP(parser, CharBlock)35DEFINE_DUMP(semantics, Symbol)36DEFINE_DUMP(semantics, Scope)37DEFINE_DUMP(semantics, IntrinsicTypeSpec)38DEFINE_DUMP(semantics, DerivedTypeSpec)39DEFINE_DUMP(semantics, DeclTypeSpec)40} // namespace Fortran41 42#endif43