Commit Graph

218293 Commits

Author SHA1 Message Date
Kushal Pal
d9167a76f4 gccrs: Fix nightly rustc warnings
libgrust/ChangeLog:

	* libformat_parser/Cargo.toml:
	Used crate-type instead of depricated crate_type.
	* libformat_parser/generic_format_parser/src/lib.rs:
	Remove dead code.
	* libformat_parser/src/lib.rs: Likewise.

Signed-off-by: Kushal Pal <kushalpal109@gmail.com>
2025-03-17 16:35:52 +01:00
Kushal Pal
29f847e8b8 gccrs: Added FFIVector to get Polonius output on C++ side
gcc/rust/ChangeLog:

	* Make-lang.in: Compile new file, rust-polonius.cc
	* checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs: Opaque
	type to represent FFIVector from C++.
	* checks/errors/borrowck/ffi-polonius/src/gccrs_ffi_generated.rs:
	Change types of fields in Output.
	* checks/errors/borrowck/ffi-polonius/src/lib.rs: Added helper
	functions to contruct Polonius output on C++ side,
	used helpers to contruct Polonius output on C++ side.
	* checks/errors/borrowck/polonius/rust-polonius-ffi.h (make_vector):
	FFIVector is a wrapper around std::vector for transfering data
	from Rust to C++.
	(struct Output): Use pointers to FFIVector instead of bool to
	store Polonius output data.
	* checks/errors/borrowck/polonius/rust-polonius.h (FFIVector__new):
	Helper function.
	(FFIVector__new_vec_pair): Likewise.
	(FFIVector__new_vec_triple): Likewise.
	(FFIVector__push): Likewise.
	(FFIVector__push_vec_pair): Likewise.
	(FFIVector__push_vec_triple): Likewise.
	* checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::go):
	Convert FFIVector to std::vector representation for easier
	navigation.
	* checks/errors/borrowck/polonius/rust-polonius.cc: New file,
	implementation of helper functions.

Signed-off-by: Kushal Pal <kushalpal109@gmail.com>
2025-03-17 16:35:52 +01:00
Marc Poulhiès
e50983a756 rust: fix HIR dump for MatchExpr
The visitor was still using the as_string() method.

gcc/rust/ChangeLog:

	* hir/rust-hir-dump.cc (Dump::do_matcharm): New.
	(Dump::do_matchcase): New.
	(Dump::visit(MatchExpr)): Adjust, don't use as_string.
	* hir/rust-hir-dump.h (Dump::do_matcharm, Dump::do_matchcase): New.

Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
2025-03-17 16:35:52 +01:00
Liam Naddell
dbdb6e3cd2 gccrs: [gccrs#3051] Remove unnecessary #include from rust-expr.h
gcc/rust/ChangeLog:
	* ast/rust-expr.h:
	Remove unnecessary include.

Signed-off-by: Liam Naddell <liam.naddell@mail.utoronto.ca>
2025-03-17 16:35:52 +01:00
badumbatish
4d34ed8aaa gccrs: Safe-guard InlineAsm structs
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct AnonConst):
	Safe-guard InlineAsm structs
	(struct InlineAsmOperand): Likewise.
	* expand/rust-macro-builtins-asm.cc (parse_reg_operand_in):
	Likewise.
	(parse_reg_operand_out): Likewise.
	(parse_reg_operand_inout): Likewise.

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:52 +01:00
badumbatish
2f80f40a25 gccrs: Store parse result of parse_format_string(s)
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct TupleTemplateStr):
	Store parse result of parse_format_string(s)
	* expand/rust-macro-builtins-asm.cc (parse_format_strings):
	Likewise

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:52 +01:00
jjasmine
e3db0b3919 gccrs: Clean up monadic operations on expected<>
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_asm):
	Clean up monadic operations on expected<>

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:52 +01:00
jjasmine
c75e533949 gccrs: Addresses warning, put warn unused in right place
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg_operand):
	Addresses warning, put warn unused in right place
	(parse_reg_operand_inout): Likewise.
	(parse_asm_arg): Likewise.
	* expand/rust-macro-builtins-asm.h (enum WARN_UNUSED_RESULT): Likewise.
	(enum InlineAsmParseError): Likewise.
	(validate): Likewise.
	(parse_asm_arg): Likewise.
	(parse_format_strings): Likewise.
	(parse_clobber_abi): Likewise.
	(parse_reg_operand): Likewise.
	(parse_reg_operand_in): Likewise.
	(parse_reg_operand_out): Likewise.
	(parse_reg_operand_lateout): Likewise.
	(parse_reg_operand_inout): Likewise.
	(parse_reg_operand_inlateout): Likewise.
	(parse_reg_operand_const): Likewise.
	(parse_reg_operand_sym): Likewise.
	(parse_reg_operand_unexpected): Likewise.
	(parse_asm): Likewise.
	(check_and_set): Likewise.
	(parse_options): Likewise.
	(parse_reg): Likewise.
	(parse_format_string): Likewise.

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:52 +01:00
jjasmine
719870217a gccrs: Add WARN_UNUSED_RESULT parse error
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.h (enum InlineAsmParseError):
	Add WARN_UNUSED_RESULT parse error
	(enum WARN_UNUSED_RESULT): Likewise.

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:51 +01:00
jjasmine
bad8b19ced gccrs: Added a test that is expected to fail
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_clobber_abi):
	added comments
	(parse_options): Likewise
	(parse_asm_arg): Likewise
	(parse_asm): Likewise
	* expand/rust-macro-builtins-asm.h: Likewise

gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_illegal_options.rs: new test
	* rust/compile/inline_asm_illegal_operands.rs: New test.
	This is expected to fail but we couldn't resolve parse_expr()'s
	general functionality yet

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:51 +01:00
jjasmine
95c31e91ea gccrs: Added tl::expected to parse_operand
Added tl::expected to parse_operand by implementing the validation
inside the parse_reg_operand function.

gcc/rust/ChangeLog:

	* ast/rust-expr.h:
	Added tl::expected to parse_operand
	* expand/rust-macro-builtins-asm.cc (parse_reg): Likewise.
	(parse_reg_operand): Likewise.
	(parse_reg_operand_const): Likewise.
	(parse_reg_operand_inout): Likewise.
	(parse_asm_arg): Likewise.
	* expand/rust-macro-builtins-asm.h: Likewise.

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:51 +01:00
jjasmine
e780a09bd8 gccrs: Scaffold expected on parse_options and asm_arg
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (check_and_set):
	Scaffold expected on parse_options and asm_arg
	(parse_options): Likewise
	(parse_asm_arg): Likewise
	* expand/rust-macro-builtins-asm.h (check_and_set): Likewise
	(parse_label): Likewise

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:51 +01:00
jjasmine
f506ca07e1 gccrs: Finish expected parse_reg_operand
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg_operand_in):
	Finish expected parse_reg_operand
	(parse_reg_operand_unexpected): Likewise
	* expand/rust-macro-builtins-asm.h (parse_reg_operand_unexpected): Likewise

Signed-off-by: badumbatish <tanghocle456@gmail.com>
2025-03-17 16:35:50 +01:00
jjasmine
f443b80b20 gccrs: Finish incorporating expected of parse_reg_operand
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_clobber_abi):
	Finish incorporating expected of parse_reg_operand
	(parse_reg): Likewise.
	(parse_reg_operand): Likewise.
	(parse_reg_operand_in): Likewise.
	(parse_reg_operand_out): Likewise.
	(parse_reg_operand_lateout): Likewise.
	(parse_reg_operand_const): Likewise.
	(parse_reg_operand_inout): Likewise.
	(parse_reg_operand_sym): Likewise.
	(MacroBuiltin::asm_handler): Likewise.
	(parse_asm_arg): Likewise.
	(parse_asm): Likewise.
	(parse_format_strings): Likewise.
	(validate): Likewise.
	* expand/rust-macro-builtins-asm.h (class InlineAsmParseError): Likewise.
	(enum InlineAsmParseError): Likewise.
	(validate): Likewise.
	(parse_format_strings): Likewise.
	(parse_reg_operand_in): Likewise.
	(parse_reg_operand_out): Likewise.
	(parse_reg_operand_lateout): Likewise.
	(parse_reg_operand_inout): Likewise.
	(parse_reg_operand_inlateout): Likewise.
	(parse_reg_operand_const): Likewise.
	(parse_reg_operand_sym): Likewise.
2025-03-17 16:35:50 +01:00
ansh
908a4f88c6 gccrs: Add RAW_STRING_LITERAL
gcc/rust/ChangeLog:

	* ast/rust-ast-collector.cc (TokenCollector::visit):
	Handle case for RAW_STRING_LITERAL.
	* ast/rust-ast.cc (AttributeParser::parse_meta_item_inner):
	Likewise.
	(AttributeParser::parse_literal): Likewise.
	* ast/rust-ast.h: Likewise.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_literal):
	Likewise.
	* lex/rust-lex.cc (Lexer::parse_raw_string): Likewise.
	* lex/rust-token.cc (Token::as_string): Likewise.
	* lex/rust-token.h (enum PrimitiveCoreType): Likewise.
	* parse/rust-parse-impl.h (Parser::parse_attr_input): Likewise.
	(Parser::parse_literal_expr): Likewise.
	(Parser::parse_pattern_no_alt): Likewise.

Signed-off-by: ansh <anshmalik2002@gmail.com>
2025-03-17 16:35:50 +01:00
jjasmine
a9c95b8278 gccrs: Added ExprType::InlineAsm
gcc/rust/ChangeLog:

	* hir/tree/rust-hir-expr.h:
	Added ExprType::InlineAsm
	* hir/tree/rust-hir.h:
	Added ExprType::InlineAsm
2025-03-17 16:35:49 +01:00
jjasmine
10ba2fdca7 gccrs: Add test case for using asm! outside of unsafe {}
gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_outside_unsafe.rs: New test.
2025-03-17 16:35:49 +01:00
Arthur Cohen
92418978e8 gccrs: expand: Switch semicolon boolean to an enum instead.
gcc/rust/ChangeLog:

	* ast/rust-ast-fragment.h (enum class): Add InvocKind and AsmKind enums.
	* ast/rust-macro.h: Switch semicolon boolean to InvocKind enum.
	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
	* expand/rust-macro-builtins-asm.cc (MacroBuiltin::asm_handler): Likewise.
	(parse_asm): Likewise.
	* expand/rust-macro-builtins-asm.h (parse_asm): Likewise.
	* expand/rust-macro-builtins-format-args.cc (MacroBuiltin::format_args_handler): Likewise.
	* expand/rust-macro-builtins-include.cc (MacroBuiltin::include_bytes_handler): Likewise.
	(MacroBuiltin::include_str_handler): Likewise.
	(MacroBuiltin::include_handler): Likewise.
	* expand/rust-macro-builtins-location.cc (MacroBuiltin::file_handler): Likewise.
	(MacroBuiltin::column_handler): Likewise.
	(MacroBuiltin::line_handler): Likewise.
	* expand/rust-macro-builtins-log-debug.cc (MacroBuiltin::assert_handler): Likewise.
	* expand/rust-macro-builtins-utility.cc (MacroBuiltin::compile_error_handler): Likewise.
	(MacroBuiltin::concat_handler): Likewise.
	(MacroBuiltin::env_handler): Likewise.
	(MacroBuiltin::cfg_handler): Likewise.
	(MacroBuiltin::stringify_handler): Likewise.
	* expand/rust-macro-builtins.cc (format_args_maker): Likewise.
	(enum class): Likewise.
	(inline_asm_maker): Likewise.
	(MacroBuiltin::sorry): Likewise.
	(MacroBuiltin::proc_macro_builtin): Likewise.
	* expand/rust-macro-builtins.h: Likewise.
	* expand/rust-macro-expand.cc (MacroExpander::expand_decl_macro): Likewise.
	(MacroExpander::expand_eager_invocations): Likewise.
	(MacroExpander::expand_invoc): Likewise.
	* expand/rust-macro-expand.h (struct MacroExpander): Likewise.
2025-03-17 16:35:49 +01:00
Arthur Cohen
d129c4ed80 gccrs: expand: Keep track of semicoloned builtin macros
This is quite a rough fix (like a lot of the macro expansion code...) but
it allows built-in macros to be treated as statements. I *think* asm!()
might be the only one where it really matters, but also doing something
like

{
    line!();
}

will now work, whereas before the macro invocation would not get expanded
properly and would be ignored.

gcc/rust/ChangeLog:

	* ast/rust-ast-fragment.h: Pass `is_semicolon` information to builtin
	macro transcribers.
	* ast/rust-macro.h: Pass semicolon information to transcriber..
	* expand/rust-macro-builtins-asm.cc (MacroBuiltin::asm_handler): Likewise.
	(parse_asm): Likewise.
	* expand/rust-macro-builtins-asm.h (parse_asm): Likewise.
	* expand/rust-macro-builtins-format-args.cc (MacroBuiltin::format_args_handler): Likewise.
	* expand/rust-macro-builtins-include.cc (MacroBuiltin::include_bytes_handler): Likewise.
	(MacroBuiltin::include_str_handler): Likewise.
	(MacroBuiltin::include_handler): Likewise.
	* expand/rust-macro-builtins-location.cc (MacroBuiltin::file_handler): Likewise.
	(MacroBuiltin::column_handler): Likewise.
	(MacroBuiltin::line_handler): Likewise.
	* expand/rust-macro-builtins-log-debug.cc (MacroBuiltin::assert_handler): Likewise.
	* expand/rust-macro-builtins-utility.cc (MacroBuiltin::compile_error_handler): Likewise.
	(MacroBuiltin::concat_handler): Likewise.
	(MacroBuiltin::env_handler): Likewise.
	(MacroBuiltin::cfg_handler): Likewise.
	(MacroBuiltin::stringify_handler): Likewise.
	* expand/rust-macro-builtins.cc (format_args_maker): Likewise.
	(inline_asm_maker): Likewise.
	(MacroBuiltin::sorry): Likewise.
	(MacroBuiltin::proc_macro_builtin): Likewise.
	* expand/rust-macro-builtins.h: Likewise.
	* expand/rust-macro-expand.cc (MacroExpander::expand_decl_macro): Likewise.
	(MacroExpander::expand_invoc): Likewise.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Remove rust_unreachable.
	* ast/rust-ast.cc (InlineAsm::accept_vis): Likewise.
	* hir/tree/rust-hir.cc (InlineAsm::accept_vis): Likewise.
2025-03-17 16:35:49 +01:00
dave
a3e002aa61 gccrs: Fix optional trait parsing
gcc/rust/ChangeLog:

	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): Check for ?Trait in visitor

gcc/testsuite/ChangeLog:

	* rust/compile/issue-2725.rs: New test.

Signed-off-by: Dave Evans <dave@dmetwo.org>
2025-03-17 16:35:48 +01:00
jjasmine
2658b0642b gccrs: Partial second layer of expected in parsing asm
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parseDirSpec):
	Partial second layer of expected in parsing asm
	(parse_clobber_abi): Likewise
	(parse_operand): Likewise
	(parse_reg_operand): Likewise
	(parse_asm_arg): Likewise
	* expand/rust-macro-builtins-asm.h (parse_clobber_abi): Likewise
	(parse_reg_operand): Likewise
	(parse_operand): Likewise
2025-03-17 16:35:48 +01:00
jjasmine
3c14514dbc gccrs: Expected first layer done
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg):
	Expected first layer done
	(parse_reg_operand): Likewise.
	(parse_asm_arg): Likewise.
	(parse_format_strings): Likewise.
	(parse_asm): Likewise.
	(validate): Likewise.
	* expand/rust-macro-builtins-asm.h (parse_asm_arg): Likewise.
	(validate): Likewise.
	(parse_format_strings): Likewise.
2025-03-17 16:35:48 +01:00
jjasmine
9cde9ec568 gccrs: 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.
2025-03-17 16:35:47 +01:00
jjasmine
b731ef4ec2 gccrs: Update parser to parse strings in the first stage
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg_operand):
	Update parser to parse strings in the first stage
	(parse_label): not needed right now
2025-03-17 16:35:47 +01:00
jjasmine
2e62553cb0 gccrs: Scaffolding validation of asm!
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_asm):
	Scaffolding validation of asm!
	(validate): Likewise
	* expand/rust-macro-builtins-asm.h (validate): Likewise
2025-03-17 16:35:47 +01:00
jjasmine
c1662670f7 gccrs: Partial support for operand
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct InlineAsmOperand):
	Partial support for operand
	* expand/rust-macro-builtins-asm.cc (parse_reg_operand): Likewise.
	(parse_label): Likewise.
	* expand/rust-macro-builtins-asm.h (parse_label): Likewise.
2025-03-17 16:35:47 +01:00
jjasmine
83465864db gccrs: Refactoring and supporting more parse_reg_operand
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct InlineAsmOperand):
	Refactoring and supporting more parse_reg_operand
	* expand/rust-macro-builtins-asm.cc (parse_reg_operand):
	Likewise.
	(rust_debug): Likewise.
2025-03-17 16:35:46 +01:00
jjasmine
e0eb48c3a9 gccrs: Fix visitor-related warnings
gcc/rust/ChangeLog:

	* ast/rust-ast-collector.cc (TokenCollector::visit):
	Fix visitor-related warnings
	* ast/rust-ast-collector.h: Likewise.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
	* ast/rust-ast-visitor.h: Likewise.
	* checks/errors/borrowck/rust-bir-builder-struct.h: Likewise.
	* checks/errors/borrowck/rust-function-collector.h: Likewise.
	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
	* checks/errors/rust-const-checker.h: Likewise.
	* expand/rust-derive.h: Likewise.
	* expand/rust-macro-builtins-asm.cc (parse_reg_operand): Likewise.
	* hir/rust-hir-dump.cc (Dump::visit): Likewise.
	* hir/rust-hir-dump.h: Likewise.
	* hir/tree/rust-hir-visitor.h: Likewise.
	* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
	* resolve/rust-ast-resolve-base.h: Likewise.
2025-03-17 16:35:46 +01:00
jjasmine
afc905c2d7 gccrs: Add potentially_nonpromoted_keywords set str
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg_operand):
	Add potentially_nonpromoted_keywords set str
	(check_identifier): likewise
	* expand/rust-macro-builtins-asm.h (parse_format_string):
	likewise

gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_parse_operand.rs: fix warnings
2025-03-17 16:35:46 +01:00
jjasmine
58a5a14875 gccrs: Successful parse of in and inout, albeit with str
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg_operand):
	Successful parse of in and inout, albeit with str
	(check_identifier): Likewise.
	(parse_asm_arg): Likewise.
	* expand/rust-macro-builtins-asm.h (parse_format_string): Likewise.

gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_parse_operand.rs: New test.
2025-03-17 16:35:45 +01:00
jjasmine
7039e95a67 gccrs: Scaffolding HIRFullVisitor for inline asm
gcc/rust/ChangeLog:

	* ast/rust-ast-visitor.h:
	Scaffolding HIRFullVisitor for inline asm
	* ast/rust-ast.cc (InlineAsm::accept_vis): Likewise.
	* hir/tree/rust-hir-visitor.h (RUST_HIR_VISITOR_H): Likewise.
	* hir/tree/rust-hir.cc (InlineAsm::accept_vis): Likewise.
2025-03-17 16:35:45 +01:00
jjasmine
fe3dd57b56 gccrs: Scaffolding ast visitor for InlineAsm
gcc/rust/ChangeLog:

	* ast/rust-ast-visitor.h:
	Scaffolding ast visitor for InlineAsm
	* ast/rust-ast.cc (InlineAsm::accept_vis): Likewise.
	* ast/rust-expr.h: Likewise.
2025-03-17 16:35:45 +01:00
jjasmine
c3c045746e gccrs: Fix warnings
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg_operand):
	Fix compile warnings.
	(parse_options): Likewise.
	(parse_asm): Likewise.

gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_illegal_options.rs:
2025-03-17 16:35:44 +01:00
jjasmine
d7f480b769 gccrs: Partial unsafe support for inline asm
gcc/rust/ChangeLog:

	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit):
	Partial unsafe support for inline asm
	* checks/errors/rust-unsafe-checker.h: Likewise.
	* hir/tree/rust-hir-expr.h: Likewise.
	* hir/tree/rust-hir.cc (InlineAsm::accept_vis): Likewise.
2025-03-17 16:35:44 +01:00
jjasmine
bfc249cc17 gccrs: Add support for AST to HIR inline asm translation
gcc/rust/ChangeLog:

	* ast/rust-expr.h:
	Add support for AST to HIR inline asm translation
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
	* hir/rust-ast-lower-base.h: Likewise.
	* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
	* hir/rust-ast-lower-expr.h: Likewise.
	* hir/tree/rust-hir-expr.h (class InlineAsm): Likewise.
2025-03-17 16:35:44 +01:00
jjasmine
a030a5295e gccrs: Slim down the test cases
gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_faulty_clobber.rs: compress
	the test
	* rust/compile/inline_asm_nop.rs: compress
	the test
	* rust/compile/inline_asm_faulty_clobber_1.rs: Removed.
	* rust/compile/inline_asm_faulty_clobber_2.rs: Removed.
	* rust/compile/inline_asm_nop_2.rs: Removed.
2025-03-17 16:35:44 +01:00
jjasmine
f0c9a6e73d gccrs: Refactoring for inline asm pr
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct AnonConst):
	major refactoring of inline asm, mostly concerns
	naming convention, trinary conditionals, warnings,
	adding rust_unreachables in not-yet supported errors.
	(struct InlineAsmRegOrRegClass): Likewise.
	(struct InlineAsmOperand): Likewise.
	* expand/rust-macro-builtins-asm.cc (parse_clobber_abi): Likewise.
	(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 (parse_asm_arg): Likewise.
	(check_identifier): Likewise.
	(check_and_set): Likewise.
	(parse_operand): Likewise.
	(parse_reg_operand): Likewise.
	(parse_options): Likewise.
	(parse_reg): Likewise.
	(parse_clobber_abi): Likewise.
	* expand/rust-macro-builtins.cc (enum class): Likewise.
	(inline_asm_maker): Likewise.
	* checks/errors/borrowck/ffi-polonius/Cargo.lock: Removed. Likewise.

gcc/testsuite/ChangeLog:
	* rust/compile/inline_asm_faulty_clobber.rs: Likewise.
	* rust/compile/inline_asm_faulty_clobber_1.rs: Likewise.
	* rust/compile/inline_asm_faulty_clobber_2.rs: Likewise.
	* rust/compile/inline_asm_illegal_options.rs: Likewise.
2025-03-17 16:35:43 +01:00
jjasmine
256bb62f99 gccrs: Got AST::Fragment to be created from InlineAsm
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct AnonConst):
	Got AST::Fragment to be created from InlineAsm.
	(struct InlineAsmOperand): Likewise.
	(class InlineAsm): Likewise.
	* expand/rust-macro-builtins-asm.cc (parse_reg_operand): Likewise.
	(parse_asm): likewise
2025-03-17 16:35:43 +01:00
jjasmine
5d2d1a2d98 gccrs: Working towards parse_reg and parse_reg_operand
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_reg):
	Working towards parse_reg and parse_reg_operand
	(parse_reg_operand):
	Working towards parse_reg and parse_reg_operand
	(parse_asm_arg):
	Add todo about errors
	* expand/rust-macro-builtins-asm.h (parse_global_asm):
	remove dead code.
	(parse_nonglobal_asm):
	remove dead code.
2025-03-17 16:35:43 +01:00
jjasmine
af786adccd gccrs: Renamed parseAsmArg to conform to other function names
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parseAsmArg):
	Renamed parseAsmArg to conform to other function names
	(parse_asm_arg): Likewise.
	(parse_asm): Likewise.
	* expand/rust-macro-builtins-asm.h (parseAsmArg): Likewise.
	(parse_asm_arg): Likewise.
2025-03-17 16:35:42 +01:00
jjasmine
07fb0f1e3d gccrs: Big Refactor after meeting
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct InlineAsmRegOrRegClass):
	Remove union
	(struct InlineAsmOperand): Make instances of inside struct.
	* expand/rust-macro-builtins-asm.cc (parse_clobber_abi):
	Change signature with inlineAsmCtx.
	(parse_reg): Likewise.
	(parse_operand): Likewise.
	(parse_reg_operand): Likewise.
	(check_and_set): Likewise.
	(parse_options): Likewise.
	(parse_format_string): Likewise.
	(parseAsmArg): Likewise.
	(parse_asm): Likewise.
	* expand/rust-macro-builtins-asm.h (class InlineAsmContext): Likewise.
	(parseAsmArg): Likewise.
	(check_and_set): Likewise.
	(parse_reg_operand): Likewise.
	(parse_options): Likewise.
	(parse_reg): Likewise.
	(parse_clobber_abi): Likewise.
2025-03-17 16:35:42 +01:00
jjasmine
c3d566ec7b gccrs: Remove global_asm and non_global_asm handler
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc
	(MacroBuiltin::global_asm_handler):
	Remove global_asm and non_global_asm handler
	(MacroBuiltin::nonglobal_asm_handler): Likewise.
	(MacroBuiltin::asm_handler): Likewise.
	* expand/rust-macro-builtins.cc (enum class): Likewise.
	(inline_asm_maker): Likewise.
	* expand/rust-macro-builtins.h: Likewise.
2025-03-17 16:35:41 +01:00
jjasmine
bcd7de4380 gccrs: Safegaurd InlineAsm's clone_expr_...
Safegaurd InlineAsm's clone_expr_... with unreachable since
we would never use them.

gcc/rust/ChangeLog:

	* ast/rust-expr.h:
	Safegaurd InlineAsm's clone_expr_... with unreachable.
2025-03-17 16:35:41 +01:00
jjasmine
939b1262fa gccrs: Rename InlineAsmOptions to InlineAsmOption
Rename InlineAsmOptions to InlineAsmOption for clarity

gcc/rust/ChangeLog:

	* ast/rust-ast-full-decls.h (enum class):
	Rename InlineAsmOptions to InlineAsmOption for clarity
	* ast/rust-expr.h (enum class): Likewise.
	* expand/rust-macro-builtins-asm.cc (check_and_set): Likewise.
	(parse_options): Likewise.
	* expand/rust-macro-builtins-asm.h (check_and_set): Likewise.
	* hir/tree/rust-hir-expr.h: Likewise.
2025-03-17 16:35:41 +01:00
jjasmine
ec5104296c gccrs: Scaffolding parse_reg
gcc/rust/ChangeLog:

	* ast/rust-expr.h (struct InlineAsmRegOrRegClass):
	Scaffolding parse_reg
	* expand/rust-macro-builtins-asm.cc (parse_reg): Likewise.
	(parse_operand): Likewise.
	(parseAsmArg): Likewise.
2025-03-17 16:35:41 +01:00
jjasmine
3d99542a87 gccrs: Resolve static decl warning
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.h (parseAsmArg):
	Resolve static decl warning
	(parse_nonglobal_asm):
	Resolve static decl warning
2025-03-17 16:35:41 +01:00
jjasmine
63da1346b0 gccrs: Add checks for duplicate options in inline asm
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (check_and_set):
	Add checks for duplicate options in inline asm
	(parse_options): likewise.

gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_illegal_options.rs: New test.
2025-03-17 16:35:40 +01:00
jjasmine
16e2b3e559 gccrs: Wraps inline_asm tests in unsafe {}
gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_faulty_clobber.rs:
	Wraps inline_asm tests in unsafe {}
	* rust/compile/inline_asm_faulty_clobber_1.rs: likewise.
	* rust/compile/inline_asm_faulty_clobber_2.rs: likewise.
	* rust/compile/inline_asm_ident_first.rs: likewise.
	* rust/compile/inline_asm_nop.rs: likewise.
	* rust/compile/inline_asm_nop_2.rs: likewise.
2025-03-17 16:35:40 +01:00
jjasmine
c02891fd84 gccrs: Parsing of options(...) done.
This is without any mutually exclusive options checked, or
any relationship with reg_operands. Very primitive.

gcc/rust/ChangeLog:

	* ast/rust-expr.h: parsing of options(...)
	* expand/rust-macro-builtins-asm.cc (check_and_set):
	likewise.
	(parse_options): likewise.
	(parseAsmArg): likewise.
	* expand/rust-macro-builtins-asm.h (check_and_set):
	likewise.

gcc/testsuite/ChangeLog:

	* rust/compile/inline_asm_legal_options.rs: New test.
2025-03-17 16:35:39 +01:00
jjasmine
26c50996ef gccrs: Implemented parse_clobber_abi to pass new tests
gcc/rust/ChangeLog:

	* expand/rust-macro-builtins-asm.cc (parse_clobber_abi):
	implemented parse_clobber_abi
	(parse_format_string): likewise.
	(parseAsmArg): likewise.
	(parse_asm): likewise.
	* expand/rust-macro-builtins-asm.h (parseAsmArg): likewise.
2025-03-17 16:35:39 +01:00