10b57cec5SDimitry Andric //===- MCAsmMacro.h - Assembly Macros ---------------------------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #include "llvm/MC/MCAsmMacro.h"
100b57cec5SDimitry Andric #include "llvm/Support/raw_ostream.h"
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric using namespace llvm;
130b57cec5SDimitry Andric 
140b57cec5SDimitry Andric #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
dump(raw_ostream & OS) const150b57cec5SDimitry Andric void MCAsmMacroParameter::dump(raw_ostream &OS) const {
160b57cec5SDimitry Andric   OS << "\"" << Name << "\"";
170b57cec5SDimitry Andric   if (Required)
180b57cec5SDimitry Andric     OS << ":req";
190b57cec5SDimitry Andric   if (Vararg)
200b57cec5SDimitry Andric     OS << ":vararg";
210b57cec5SDimitry Andric   if (!Value.empty()) {
220b57cec5SDimitry Andric     OS << " = ";
230b57cec5SDimitry Andric     bool first = true;
240b57cec5SDimitry Andric     for (const AsmToken &T : Value) {
250b57cec5SDimitry Andric       if (!first)
260b57cec5SDimitry Andric         OS << ", ";
270b57cec5SDimitry Andric       first = false;
280b57cec5SDimitry Andric       OS << T.getString();
290b57cec5SDimitry Andric     }
300b57cec5SDimitry Andric   }
310b57cec5SDimitry Andric   OS << "\n";
320b57cec5SDimitry Andric }
330b57cec5SDimitry Andric 
dump(raw_ostream & OS) const340b57cec5SDimitry Andric void MCAsmMacro::dump(raw_ostream &OS) const {
350b57cec5SDimitry Andric   OS << "Macro " << Name << ":\n";
360b57cec5SDimitry Andric   OS << "  Parameters:\n";
370b57cec5SDimitry Andric   for (const MCAsmMacroParameter &P : Parameters) {
380b57cec5SDimitry Andric     OS << "    ";
390b57cec5SDimitry Andric     P.dump();
400b57cec5SDimitry Andric   }
410b57cec5SDimitry Andric   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