Skip to content

Commit bf027da

Browse files
committed
[ms] [llvm-ml] Enable support for MASM-style macro procedures
Allows the MACRO directive to define macro procedures with parameters and macro-local symbols. Supports required and optional parameters (including default values), and matches ml64.exe for its macro-local symbol handling (up to 65536 macro-local symbols in any translation unit). Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D89729
1 parent 586c375 commit bf027da

File tree

5 files changed

+302
-214
lines changed

5 files changed

+302
-214
lines changed

llvm/include/llvm/MC/MCAsmMacro.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,14 @@ struct MCAsmMacro {
143143
StringRef Name;
144144
StringRef Body;
145145
MCAsmMacroParameters Parameters;
146+
std::vector<std::string> Locals;
146147

147148
public:
148149
MCAsmMacro(StringRef N, StringRef B, MCAsmMacroParameters P)
149150
: Name(N), Body(B), Parameters(std::move(P)) {}
151+
MCAsmMacro(StringRef N, StringRef B, MCAsmMacroParameters P,
152+
std::vector<std::string> L)
153+
: Name(N), Body(B), Parameters(std::move(P)), Locals(std::move(L)) {}
150154

151155
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
152156
void dump() const { dump(dbgs()); }

llvm/lib/MC/MCAsmMacro.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ void MCAsmMacro::dump(raw_ostream &OS) const {
3838
OS << " ";
3939
P.dump();
4040
}
41+
if (!Locals.empty()) {
42+
OS << " Locals:\n";
43+
for (StringRef L : Locals)
44+
OS << " " << L << '\n';
45+
}
4146
OS << " (BEGIN BODY)" << Body << "(END BODY)\n";
4247
}
4348
#endif

0 commit comments

Comments
 (0)