aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-builtins-asm.h
diff options
context:
space:
mode:
authorjjasmine <tanghocle456@gmail.com>2024-06-11 17:56:20 -0700
committerCohenArthur <arthur.cohen@embecosm.com>2024-06-13 15:31:07 +0000
commitda324bc6ee09a0f71ff6bc4ebcaa7e2989dbf39a (patch)
treed28ca8fb1c1aad4effd1412c6b880ca9b711964a /gcc/rust/expand/rust-macro-builtins-asm.h
parent9202993a573985e8bbaad3a4078e5a876ecd67e5 (diff)
downloadgcc-da324bc6ee09a0f71ff6bc4ebcaa7e2989dbf39a.zip
gcc-da324bc6ee09a0f71ff6bc4ebcaa7e2989dbf39a.tar.gz
gcc-da324bc6ee09a0f71ff6bc4ebcaa7e2989dbf39a.tar.bz2
Move parser and last_token_id to InlineAsmCtx
gcc/rust/ChangeLog: * expand/rust-macro-builtins-asm.cc (parse_clobber_abi): Move parser and last_token_id to InlineAsmCtx to prepapre for tl::expected. (parse_reg): Likewise. (parse_operand): Likewise. (parse_reg_operand): Likewise. (check_and_set): Likewise. (parse_options): Likewise. (parse_format_string): Likewise. (parse_asm_arg): Likewise. (parse_asm): Likewise. * expand/rust-macro-builtins-asm.h (class InlineAsmParseError): Likewise. (parse_asm_arg): Likewise. (check_and_set): Likewise. (parse_operand): Likewise. (parse_reg_operand): Likewise. (parse_options): Likewise. (parse_reg): Likewise. (parse_clobber_abi): Likewise. (parse_format_string): Likewise.
Diffstat (limited to 'gcc/rust/expand/rust-macro-builtins-asm.h')
-rw-r--r--gcc/rust/expand/rust-macro-builtins-asm.h39
1 files changed, 20 insertions, 19 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins-asm.h b/gcc/rust/expand/rust-macro-builtins-asm.h
index 293d790..90c469f 100644
--- a/gcc/rust/expand/rust-macro-builtins-asm.h
+++ b/gcc/rust/expand/rust-macro-builtins-asm.h
@@ -7,7 +7,12 @@ namespace Rust {
// All the operands are called asm_args in rustc asm.rs, we create a struct that
// can store all of these AsmArgs This replaces the phase where we have to parse
// all operands.
-
+class InlineAsmParseError
+{
+public:
+ location_t locus;
+ std::string message;
+};
class InlineAsmContext
{
public:
@@ -15,9 +20,13 @@ public:
bool is_explicit;
bool consumed_comma_without_formatted_string;
AST::InlineAsm &inline_asm;
- InlineAsmContext (AST::InlineAsm &inline_asm)
+ Parser<MacroInvocLexer> &parser;
+ int last_token_id;
+ InlineAsmContext (AST::InlineAsm &inline_asm, Parser<MacroInvocLexer> &parser,
+ int last_token_id)
: allow_templates (true), is_explicit (false),
- consumed_comma_without_formatted_string (false), inline_asm (inline_asm)
+ consumed_comma_without_formatted_string (false), inline_asm (inline_asm),
+ parser (parser), last_token_id (last_token_id)
{}
bool is_global_asm () { return inline_asm.is_global_asm; }
@@ -31,8 +40,7 @@ public:
};
int
-parse_asm_arg (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_asm_arg (InlineAsmContext &inline_asm_ctx);
tl::optional<AST::Fragment>
parse_asm (location_t invoc_locus, AST::MacroInvocData &invoc,
@@ -42,35 +50,28 @@ bool
check_identifier (Parser<MacroInvocLexer> &parser, std::string ident);
void
-check_and_set (Parser<MacroInvocLexer> &parser,
- InlineAsmContext &inline_asm_ctx, AST::InlineAsmOption option);
+check_and_set (InlineAsmContext &inline_asm_ctx, AST::InlineAsmOption option);
// From rustc
int
-parse_operand (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_operand (InlineAsmContext &inline_asm_ctx);
// From rustc
tl::optional<AST::InlineAsmOperand>
-parse_reg_operand (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_reg_operand (InlineAsmContext &inline_asm_ctx);
// From rustc
int
-parse_options (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_options (InlineAsmContext &inline_asm_ctx);
// From rustc
tl::optional<AST::InlineAsmRegOrRegClass>
-parse_reg (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_reg (InlineAsmContext &inline_asm_ctx);
int
-parse_clobber_abi (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_clobber_abi (InlineAsmContext &inline_asm_ctx);
tl::optional<std::string>
-parse_format_string (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
- InlineAsmContext &inline_asm_ctx);
+parse_format_string (InlineAsmContext &inline_asm_ctx);
tl::optional<std::string>
parse_label (Parser<MacroInvocLexer> &parser, TokenId last_token_id,