aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-builtins.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/expand/rust-macro-builtins.cc')
-rw-r--r--gcc/rust/expand/rust-macro-builtins.cc20
1 files changed, 18 insertions, 2 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.cc b/gcc/rust/expand/rust-macro-builtins.cc
index dc2482a..617202f 100644
--- a/gcc/rust/expand/rust-macro-builtins.cc
+++ b/gcc/rust/expand/rust-macro-builtins.cc
@@ -92,6 +92,22 @@ format_args_maker (AST::FormatArgs::Newline nl)
};
}
+enum class isGlobalAsm
+{
+ Yes,
+ No,
+};
+
+AST::MacroTranscriberFunc
+inline_asm_maker (isGlobalAsm is_global_asm)
+{
+ bool global_asm = is_global_asm == isGlobalAsm::Yes ? true : false;
+
+ return [global_asm] (location_t loc, AST::MacroInvocData &invoc) {
+ return MacroBuiltin::asm_handler (loc, invoc, global_asm);
+ };
+}
+
std::unordered_map<std::string, AST::MacroTranscriberFunc>
MacroBuiltin::builtin_transcribers = {
{"assert", MacroBuiltin::assert_handler},
@@ -108,8 +124,8 @@ std::unordered_map<std::string, AST::MacroTranscriberFunc>
{"include", MacroBuiltin::include_handler},
{"format_args", format_args_maker (AST::FormatArgs::Newline::No)},
{"format_args_nl", format_args_maker (AST::FormatArgs::Newline::Yes)},
- {"asm", MacroBuiltin::nonglobal_asm_handler},
- {"global_asm", MacroBuiltin::global_asm_handler},
+ {"asm", inline_asm_maker (isGlobalAsm::No)},
+ {"global_asm", inline_asm_maker (isGlobalAsm::Yes)},
/* Unimplemented macro builtins */
{"option_env", MacroBuiltin::sorry},
{"concat_idents", MacroBuiltin::sorry},