1//===- MCAsmMacro.h - Assembly Macros ---------------------------*- C++ -*-===//
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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "llvm/MC/MCAsmMacro.h"
10#include "llvm/Support/raw_ostream.h"
11
12using namespace llvm;
13
14#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
15void MCAsmMacroParameter::dump(raw_ostream &OS) const {
16  OS << "\"" << Name << "\"";
17  if (Required)
18    OS << ":req";
19  if (Vararg)
20    OS << ":vararg";
21  if (!Value.empty()) {
22    OS << " = ";
23    bool first = true;
24    for (const AsmToken &T : Value) {
25      if (!first)
26        OS << ", ";
27      first = false;
28      OS << T.getString();
29    }
30  }
31  OS << "\n";
32}
33
34void MCAsmMacro::dump(raw_ostream &OS) const {
35  OS << "Macro " << Name << ":\n";
36  OS << "  Parameters:\n";
37  for (const MCAsmMacroParameter &P : Parameters) {
38    OS << "    ";
39    P.dump();
40  }
41  if (!Locals.empty()) {
42    OS << "  Locals:\n";
43    for (StringRef L : Locals)
44      OS << "    " << L << '\n';
45  }
46  OS << "  (BEGIN BODY)" << Body << "(END BODY)\n";
47}
48#endif
49