diff options
author | jjasmine <tanghocle456@gmail.com> | 2024-06-11 17:56:20 -0700 |
---|---|---|
committer | CohenArthur <arthur.cohen@embecosm.com> | 2024-06-13 15:31:07 +0000 |
commit | da324bc6ee09a0f71ff6bc4ebcaa7e2989dbf39a (patch) | |
tree | d28ca8fb1c1aad4effd1412c6b880ca9b711964a /gcc/rust/expand/rust-macro-builtins-asm.h | |
parent | 9202993a573985e8bbaad3a4078e5a876ecd67e5 (diff) | |
download | gcc-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.h | 39 |
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, |