Age | Commit message (Collapse) | Author | Files | Lines |
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-helpers.cc
(try_extract_string_literal_from_fragment): Perform static_cast
to AST::LiteralExpr only after it's verified that an AST::Expr
is a literal.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (AttributeParser::parse_path_meta_item): Parse
expression instead of literal. Update variant name.
(MetaItemPathLit::to_attribute): Remove function.
(AttributeParser::parse_path_meta_item): Update name.
(MetaItemPathLit::check_cfg_predicate): Likewise.
(MetaItemPathExpr::check_cfg_predicate): Likewise.
(MetaItemPathLit::accept_vis): Likewise.
(MetaItemPathExpr::accept_vis): Likewise.
* ast/rust-ast-collector.h: Update prototype and adapt code to new
expression.
* ast/rust-ast-collector.cc: Update code to expr.
* ast/rust-ast-full-decls.h (class MetaItemPathLit): Likewise.
(class MetaItemPathExpr): Likewise.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* ast/rust-ast-visitor.h: Likewise.
* ast/rust-ast.h (class MetaItemPathLit): Rename class from here...
(class MetaItemPathExpr): ... to here.
* ast/rust-expr.h (class MetaItemPathLit): Rename class from here...
(class MetaItemPathExpr): ...to here.
* expand/rust-derive.h: Update class name.
* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
* expand/rust-expand-visitor.h: Likewise.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
* hir/rust-ast-lower-base.h: Likewise.
* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
* resolve/rust-ast-resolve-base.h: Likewise.
* resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
Likewise.
* resolve/rust-early-name-resolver.h: Likewise.
* util/rust-attributes.cc (AttributeChecker::visit): Likewise.
* util/rust-attributes.h: Likewise.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-helpers.cc: Remove use after move.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
The main change can be found in ast/rust-pattern.h, which introduces 2 item types for
AST::SlicePattern - one without rest pattern (SlicePatternItemsNoRest) & the other with
it (SlicePatternItemsHasRest). This led to a number of cascading changes as seen in the
changelog.
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc: Add support for the 2 new classes.
* ast/rust-ast-collector.h: Header file update for above.
* ast/rust-ast-full-decls.h: Add forward decls for the 2 new classes.
* ast/rust-ast-visitor.cc: Add visit support for the 2 new classes.
* ast/rust-ast-visitor.h: Header file update for above.
* ast/rust-pattern.cc: Implementation of certain methods for the 2 new classes.
* ast/rust-pattern.h: Define the 2 new classes. Update SlicePattern to be able to hold
2 kinds of items - SlicePatternItemsNoRest or SlicePatternItemsRest.
* expand/rust-cfg-strip.cc: Add support for the 2 new classes.
* expand/rust-cfg-strip.h: Header file update for above.
* expand/rust-derive.h: Add visits for the 2 new classes.
* hir/rust-ast-lower-base.cc: Add visits for the 2 new classes.
* hir/rust-ast-lower-base.h: Header file update for above.
* hir/rust-ast-lower-pattern.cc: Update lowering of SlicePattern to support
SlicePatternItemsNoRest.
* parse/rust-parse-impl.h (parse_slice_pattern()): Add support for parsing DOT_DOT into
respective SlicePatternItems.
* resolve/rust-ast-resolve-base.cc: Add visits for the 2 new classes.
* resolve/rust-ast-resolve-base.h: Header file update for above.
* resolve/rust-ast-resolve-pattern.cc: Update SlicePattern resolution to support new
classes.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* Make-lang.in: Compile the offset_of handler.
* lang.opt: Add -frust-assume-builtin-offset-of option.
* ast/rust-ast.h: Add has_str() for const_TokenPtr.
* expand/rust-macro-builtins.cc: Map offset_of as builtin.
* expand/rust-macro-builtins.h: Declare it.
* expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Add hack for calling builtin
offset_of!().
* resolve/rust-early-name-resolver-2.0.cc (Early::visit): Likewise.
* expand/rust-macro-builtins-offset-of.cc: New file.
gcc/testsuite/ChangeLog:
* rust/compile/offset_of1.rs: New test.
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.h: Add OffsetOf expression kind.
* ast/rust-builtin-ast-nodes.h (class OffsetOf): Add node.
* ast/rust-ast.cc: Define it.
* ast/rust-ast-collector.cc: Add visitor for OffsetOf.
* ast/rust-ast-collector.h: Likewise.
* ast/rust-ast-visitor.cc: Likewise.
* ast/rust-ast-visitor.h: Likewise.
* 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.
* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
* resolve/rust-ast-resolve-base.h: Likewise.
* resolve/rust-early-name-resolver-2.0.cc: Likewise.
* expand/rust-derive.h:
|
|
A missing comma between inline assembly templates did not throw an error
and looped indefinitely.
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-asm.cc (parse_format_strings): Emit an
error when expecting a comma.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4006.rs: New test.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
Remove namespace comment after classes and structs.
gcc/rust/ChangeLog:
* checks/errors/borrowck/rust-bir-fact-collector.h: Remove spurious
comment.
* checks/errors/rust-feature.cc: Likewise.
* util/optional.h: Likewise.
* expand/rust-token-tree-desugar.cc (TokenTreeDesugar::visit): Remove
semicolons on namespace.
* expand/rust-token-tree-desugar.h: Likewise.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
Previously inline assembly expected identifiers instead of expression.
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-asm.cc (parse_reg_operand_inout): Parse
expressions and build split in out.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-asm.cc (expand_inline_asm_strings): Handle
transformation for indexed positional arguments.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
TopLevel would ignore just-loaded modules but Early and ExpandVisitor
wouldn't. The latter would produce errors when it hit attributes which
should have been indirectly CfgStrip'd away.
gcc/rust/ChangeLog:
* expand/rust-cfg-strip.cc (CfgStrip::visit): Load unloaded
modules.
* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
Assume modules have been loaded by CfgStrip.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-expand-visitor.cc
(ExpandVisitor::expand_inner_items): Adjust call to
expand_macro_children.
(ExpandVisitor::expand_inner_stmts): Likewise.
(ExpandVisitor::visit): Likewise.
* expand/rust-expand-visitor.h
(ExpandVisitor::expand_macro_children): Take a pointer to member
function instead of a std::function.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
This doesn't do anything beyond creating TryExpr and parsing them, so
try expressions shouldn't be able to make it past AST lowering yet.
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc (TokenCollector::visit): Add visitor
for TryExpr.
* ast/rust-ast-collector.h (TokenCollector::visit): Likewise.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* ast/rust-ast-visitor.h (ASTVisitor::visit): Likewise.
(DefaultASTVisitor::visit): Likewise.
* expand/rust-derive.h (DeriveVisitor::visit): Likewise.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
* hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Likewise.
* resolve/rust-ast-resolve-base.cc (ResolverBase::visit):
Likewise.
* resolve/rust-ast-resolve-base.h (ResolverBase::visit):
Likewise.
* ast/rust-ast-full-decls.h (class TryExpr): New forward class
declaration.
* ast/rust-ast.cc (TryExpr::as_string): New function.
(TryExpr::accept_vis): Likewise.
* ast/rust-expr.h (class TryExpr): New class.
* parse/rust-parse.h (Parser::parse_try_expr): New function.
* parse/rust-parse-impl.h (Parser::parse_try_expr): Likewise.
(Parser::null_denotation_not_path): Use parse_try_expr to parse
try expressions.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-format-args.cc
(format_args_parse_arguments): Accept a RAW_STRING_LITERAL token
as the first argument.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* Make-lang.in: Remove object file for ASTTypeBuilder.
* ast/rust-ast-builder.h: Remove function.
* ast/rust-ast-builder.cc (Builder::new_type): Likewise.
(Builder::new_const_param): Use reconstruct_type() instead.
(Builder::new_generic_args): Likewise.
* expand/rust-derive-default.cc (DeriveDefault::visit_struct): Likewise.
(DeriveDefault::visit_tuple): Likewise.
* expand/rust-derive-eq.cc (DeriveEq::visit_tuple): Likewise.
(DeriveEq::visit_struct): Likewise.
(DeriveEq::visit_enum): Likewise.
(DeriveEq::visit_union): Likewise.
* ast/rust-ast-builder-type.cc: Removed.
* ast/rust-ast-builder-type.h: Removed.
|
|
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc: Rename get_pattern_to_bind to get_subpattern
* ast/rust-ast-visitor.cc: Ditto.
* ast/rust-pattern.h: Ditto.
* expand/rust-cfg-strip.cc: Ditto.
* hir/rust-ast-lower-pattern.cc: Ditto.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-derive.cc: Fix formatting after fork update.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-cmp-common.cc (EnumMatchBuilder::tuple): Create two different
variant paths.
(EnumMatchBuilder::strukt): Likewise.
* expand/rust-derive-cmp-common.h: Change API.
* expand/rust-derive-ord.cc (DeriveOrd::visit_enum): Use new EnumMatchBuilder API.
* expand/rust-derive-partial-eq.cc (DerivePartialEq::visit_enum): Likewise.
gcc/testsuite/ChangeLog:
* rust/compile/derive_partial_ord1.rs: New test.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc (DeriveOrd::make_cmp_arms): Use new make_equal function.
(DeriveOrd::make_equal): New function.
(DeriveOrd::recursive_match): Handle the unit struct/tuple case.
* expand/rust-derive-ord.h: Declare make_equal.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc (DeriveOrd::cmp_call): Use references.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc (DeriveOrd::make_cmp_arms): Fix condition.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc: Finish implementation for enums.
* expand/rust-derive-ord.h: Likewise.
|
|
And use the new EnumMatchBuilder class to do so.
gcc/rust/ChangeLog:
* expand/rust-derive-partial-eq.cc (DerivePartialEq::eq_fn): Change signature.
(DerivePartialEq::visit_tuple): Use new eq_fn API.
(DerivePartialEq::visit_struct): Likewise.
(DerivePartialEq::visit_enum): Implement proper discriminant comparison.
* expand/rust-derive-partial-eq.h: Change eq_fn signature.
gcc/testsuite/ChangeLog:
* rust/execute/torture/derive-partialeq2.rs: Add declaration for
discriminant_value.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-cmp-common.h (class EnumMatchBuilder): New helper class.
* expand/rust-derive-cmp-common.cc (EnumMatchBuilder::tuple): New function.
(EnumMatchBuilder::strukt): New function.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc (DeriveOrd::cmp_call): New function.
(DeriveOrd::recursive_match): Use it.
(DeriveOrd::visit_enum): Likewise.
* expand/rust-derive-ord.h: Declare it.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-hash.cc (DeriveHash::visit_enum): Use new APIs.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc (is_last): Remove.
(DeriveOrd::visit_tuple): Fix implementation.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-cmp-common.cc (SelfOther::indexes): Fix formatting.
(SelfOther::fields): Make iterator const.
* expand/rust-derive-cmp-common.h (struct SelfOther): New declaration for indexes.
* expand/rust-derive-partial-eq.cc (DerivePartialEq::visit_tuple): Use the new API.
(DerivePartialEq::visit_struct): Likewise.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-ord.cc (DeriveOrd::make_cmp_arms): New function.
(is_last): Likewise.
(recursive_match): Likewise.
(DeriveOrd::recursive_match): Likewise.
(DeriveOrd::visit_struct): Add proper implementation.
(DeriveOrd::visit_union): Likewise.
* expand/rust-derive-ord.h: Declare these new functions.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-partial-eq.cc (DerivePartialEq::tuple_indexes): Remove.
(DerivePartialEq::field_acccesses): Remove.
(DerivePartialEq::visit_tuple): Use new API.
(DerivePartialEq::visit_struct): Likewise.
* expand/rust-derive-partial-eq.h: Remove declarations.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-cmp-common.cc: New file.
* expand/rust-derive-cmp-common.h: New file.
* Make-lang.in: Compile them.
|
|
gcc/rust/ChangeLog:
* ast/rust-ast-builder.cc (Builder::new_const_param): New function.
* ast/rust-ast-builder.h (vec): New function for creating 3 elts vector.
* expand/rust-derive.cc: Use the new_const_param builder.
* ast/rust-path.h: Add get_default_value() method.
|
|
gcc/rust/ChangeLog:
* Make-lang.in: Compile it.
* expand/rust-derive.cc (DeriveVisitor::derive): Call them.
* expand/rust-derive-ord.cc: New file.
* expand/rust-derive-ord.h: New file.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-clone.h: Add missing override qualifiers to DeriveVisitor methods.
* expand/rust-derive-copy.h: Likewise.
* expand/rust-derive-eq.h: Likewise.
* expand/rust-derive-hash.h: Likewise.
* expand/rust-derive-partial-eq.h: Likewise.
|
|
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc: Rename to_bind to subpattern.
* ast/rust-ast-visitor.cc: Ditto.
* ast/rust-pattern.cc: Ditto.
* ast/rust-pattern.h: Ditto.
* backend/rust-compile-pattern.cc: Ditto.
* expand/rust-cfg-strip.cc: Ditto.
* hir/rust-ast-lower-pattern.cc: Ditto.
* hir/rust-hir-dump.cc: Ditto.
* hir/tree/rust-hir-pattern.h: Ditto.
* hir/tree/rust-hir.cc: Ditto.
* typecheck/rust-hir-type-check-pattern.cc: Ditto.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-expr.h (ClosureExpr::get_definition_expr): New
virtual member function.
(ClosureExprInner::get_definition_expr): Add override specifier.
(ClosureExprInnerTyped::get_definition_block): Rename to...
(ClosureExprInnerTyped::get_definition_expr): ...here and add
override specifier.
* ast/rust-ast-collector.cc (TokenCollector::visit): Handle
rename of ClosureExprInnerTyped::get_definition_block to
ClosureExprInnerTyped::get_definition_expr.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* expand/rust-cfg-strip.cc (CfgStrip::visit): Likewise.
* expand/rust-expand-visitor.cc (ExpandVisitor::visit):
Likewise.
* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
Likewise.
* resolve/rust-late-name-resolver-2.0.cc (Late::visit):
Likewise.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-expr.h: Declare AnonConst and ConstBlock and use them.
* ast/rust-ast-full-decls.h: Likewise.
* ast/rust-ast.cc: Add implementation for AnonConst and ConstBlock.
* ast/rust-ast.h: Likewise.
* ast/rust-ast-collector.cc (TokenCollector::visit): Likewise.
* ast/rust-ast-collector.h: Likewise.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* ast/rust-ast-visitor.h: Likewise.
* expand/rust-derive.h: Likewise.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
* hir/rust-ast-lower-base.h: Likewise.
* hir/rust-ast-lower-expr.cc (translate_operand_const): Likewise.
* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
* resolve/rust-ast-resolve-base.h: Likewise.
* resolve/rust-ast-resolve-expr.h: Likewise.
* resolve/rust-ast-resolve-expr.cc: Likewise.
|
|
It changes declaration and switch case indentation to follow GNU coding
style.
gcc/rust/ChangeLog:
* ast/rust-ast-builder-type.cc (ASTTypeBuilder::visit): Reindent.
* ast/rust-ast-builder.cc (Builder::new_generic_args): Likewise.
* ast/rust-ast-collector.cc (TokenCollector::visit): Likewise.
* ast/rust-ast-dump.h (debug): Likewise.
* ast/rust-ast-formatting.h (indent_spaces): Likewise.
(get_string_in_delims): Likewise.
(get_mode_dump_desc): Likewise.
(append_attributes): Likewise.
(unquote_string): Likewise.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* ast/rust-ast.cc (Attribute::get_traits_to_derive): Likewise.
(UseTreeGlob::as_string): Likewise.
(UseTreeList::as_string): Likewise.
(AttributeParser::parse_path_meta_item): Likewise.
(FormatArgs::set_outer_attrs): Likewise.
* ast/rust-ast.h (operator<<): Likewise.
* ast/rust-cond-compilation.h: Likewise.
* ast/rust-desugar-apit.cc: Likewise.
* ast/rust-fmt.h (collect_pieces): Likewise.
(clone_pieces): Likewise.
* ast/rust-pattern.h (tokenid_to_rangekind): Likewise.
* backend/rust-compile-context.cc (Context::type_hasher): Likewise.
* backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
* backend/rust-compile-intrinsic.cc (get_identifier): Likewise.
(offset_handler): Likewise.
(sizeof_handler): Likewise.
(transmute_handler): Likewise.
(rotate_handler): Likewise.
(wrapping_op_handler_inner): Likewise.
(op_with_overflow_inner): Likewise.
(uninit_handler): Likewise.
(move_val_init_handler): Likewise.
(assume_handler): Likewise.
(discriminant_value_handler): Likewise.
(variant_count_handler): Likewise.
(prefetch_data_handler): Likewise.
(atomic_store_handler_inner): Likewise.
(atomic_load_handler_inner): Likewise.
(unchecked_op_inner): Likewise.
(copy_handler_inner): Likewise.
(expect_handler_inner): Likewise.
(try_handler_inner): Likewise.
* backend/rust-compile-pattern.cc (compile_range_pattern_bound): Likewise.
(CompilePatternCheckExpr::visit): Likewise.
(CompilePatternBindings::visit): Likewise.
(CompilePatternLet::visit): Likewise.
* backend/rust-compile-var-decl.h: Likewise.
* backend/rust-constexpr.cc (verify_constant): Likewise.
(find_array_ctor_elt): Likewise.
(array_index_cmp): Likewise.
(potential_constant_expression_1): Likewise.
(unshare_constructor): Likewise.
(maybe_save_constexpr_fundef): Likewise.
(returns): Likewise.
(breaks): Likewise.
(continues): Likewise.
(switches): Likewise.
(constant_value_1): Likewise.
(decl_constant_value): Likewise.
(non_const_var_error): Likewise.
(eval_constant_expression): Likewise.
(constexpr_fn_retval): Likewise.
(eval_store_expression): Likewise.
(eval_call_expression): Likewise.
(eval_binary_expression): Likewise.
(get_function_named_in_call): Likewise.
(eval_statement_list): Likewise.
(extract_string_elt): Likewise.
(eval_conditional_expression): Likewise.
(eval_bit_field_ref): Likewise.
(eval_loop_expr): Likewise.
(eval_switch_expr): Likewise.
(eval_unary_expression): Likewise.
(get_or_insert_ctor_field): Likewise.
(eval_and_check_array_index): Likewise.
* backend/rust-constexpr.h (maybe_save_constexpr_fundef): Likewise.
* backend/rust-mangle-v0.cc (v0_path): Likewise.
(v0_complex_type_prefix): Likewise.
* backend/rust-mangle.h (legacy_mangle_item): Likewise.
(v0_mangle_item): Likewise.
* backend/rust-tree.cc (convert_to_void): Likewise.
(find_parameter_packs_r): Likewise.
(rs_tree_equal): Likewise.
(publicly_uniquely_derived_p): Likewise.
(instantiation_dependent_expression_p): Likewise.
(type_has_nontrivial_copy_init): Likewise.
(is_normal_capture_proxy): Likewise.
(is_bitfield_expr_with_lowered_type): Likewise.
(undeduced_auto_decl): Likewise.
(require_deduced_type): Likewise.
(gt_pch_nx): Likewise.
(lvalue_kind): Likewise.
* backend/rust-tree.h (LANG_DECL_MIN_CHECK): Likewise.
(LANG_DECL_FN_CHECK): Likewise.
(LANG_DECL_NS_CHECK): Likewise.
(LANG_DECL_PARM_CHECK): Likewise.
(LANG_DECL_DECOMP_CHECK): Likewise.
(resort_type_member_vec): Likewise.
(convert_to_void): Likewise.
(mark_discarded_use): Likewise.
(mark_exp_read): Likewise.
(mark_use): Likewise.
(mark_rvalue_use): Likewise.
(mark_lvalue_use): Likewise.
(mark_lvalue_use_nonread): Likewise.
(convert_from_reference): Likewise.
(maybe_warn_nodiscard): Likewise.
(expr_loc_or_loc): Likewise.
(expr_loc_or_input_loc): Likewise.
(get_fndecl_from_callee): Likewise.
(pointer_offset_expression): Likewise.
(is_empty_class): Likewise.
(is_really_empty_class): Likewise.
(rs_type_quals): Likewise.
(init_modules): Likewise.
(lookup_add): Likewise.
(ovl_make): Likewise.
(struct c_fileinfo): Likewise.
(get_fileinfo): Likewise.
(cxx_make_type): Likewise.
(build_cplus_array_type): Likewise.
(comptypes): Likewise.
(rs_build_qualified_type_real): Likewise.
(vector_targets_convertible_p): Likewise.
(get_class_binding_direct): Likewise.
(lang_check_failed): Likewise.
(check_for_uninitialized_const_var): Likewise.
(cp_fold_maybe_rvalue): Likewise.
(fold_offsetof): Likewise.
(fold_non_dependent_expr): Likewise.
(in_immediate_context): Likewise.
(cxx_mark_addressable): Likewise.
(decl_constant_value): Likewise.
(is_class_type): Likewise.
(fold_builtin_is_pointer_inverconvertible_with_class): Likewise.
(c_common_type_for_mode): Likewise.
(next_common_initial_seqence): Likewise.
(fold_builtin_is_corresponding_member): Likewise.
(maybe_constant_value): Likewise.
(rs_walk_subtrees): Likewise.
(make_tree_vector): Likewise.
(release_tree_vector): Likewise.
(location_of): Likewise.
(maybe_constant_init): Likewise.
(explain_invalid_constexpr_fn): Likewise.
(literal_type_p): Likewise.
(maybe_constexpr_fn): Likewise.
(fold_non_dependent_init): Likewise.
* checks/errors/borrowck/polonius/rust-polonius.h (polonius_run): Likewise.
(FFIVector__new): Likewise.
(FFIVector__new_vec_pair): Likewise.
(FFIVector__new_vec_triple): Likewise.
(FFIVector__push): Likewise.
(FFIVector__push_vec_triple): Likewise.
* checks/errors/borrowck/rust-bir-builder-expr-stmt.cc
(ExprStmtBuilder::visit): Likewise.
* checks/errors/borrowck/rust-bir-builder-pattern.cc
(PatternBindingBuilder::visit): Likewise.
* checks/errors/borrowck/rust-bir-dump.cc (Dump::visit): Likewise.
* checks/errors/borrowck/rust-bir-fact-collector.h (points): Likewise.
* checks/errors/borrowck/rust-bir-place.h: Likewise.
* checks/errors/borrowck/rust-bir-visitor.h: Likewise.
* checks/errors/privacy/rust-privacy-check.cc (saw_errors): Likewise.
* checks/errors/privacy/rust-privacy-ctx.h (rust_privacy_ctx_test): Likewise.
* checks/errors/privacy/rust-privacy-reporter.cc
(PrivacyReporter::check_for_privacy_violation): Likewise.
(PrivacyReporter::check_base_type_privacy): Likewise.
(PrivacyReporter::visit): Likewise.
* checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit): Likewise.
* checks/errors/privacy/rust-visibility-resolver.cc
(VisibilityResolver::resolve_visibility): Likewise.
* checks/errors/rust-hir-pattern-analysis.cc (Constructor::is_covered_by): Likewise.
(PlaceInfo::specialize): Likewise.
(WitnessPat::to_string): Likewise.
(WitnessMatrix::apply_constructor): Likewise.
(lower_pattern): Likewise.
(lower_tuple_pattern): Likewise.
(lower_struct_pattern): Likewise.
* checks/errors/rust-hir-pattern-analysis.h (check_match_usefulness): Likewise.
* expand/rust-cfg-strip.cc (CfgStrip::maybe_strip_generic_args): Likewise.
* expand/rust-derive-eq.cc (DeriveEq::visit_enum): Likewise.
* expand/rust-derive.cc: Likewise.
* expand/rust-expand-format-args.cc (expand_format_args): Likewise.
* expand/rust-expand-visitor.h (is_derive): Likewise.
(is_builtin): Likewise.
* expand/rust-macro-builtins-asm.cc (expand_inline_asm_strings): Likewise.
* expand/rust-macro-builtins-asm.h (parse_asm): Likewise.
(check_identifier): Likewise.
(check_and_set): Likewise.
(parse_label): Likewise.
(parse_llvm_outputs): Likewise.
(parse_llvm_inputs): Likewise.
(parse_llvm_clobbers): Likewise.
(parse_llvm_options): Likewise.
* expand/rust-macro-builtins-helpers.h (make_macro_path_str): Likewise.
(make_token): Likewise.
(make_string): Likewise.
(macro_end_token): Likewise.
(parse_single_string_literal): Likewise.
(source_relative_path): Likewise.
(load_file_bytes): Likewise.
* expand/rust-macro-expand.cc (MacroExpander::match_fragment): Likewise.
(MacroExpander::match_matcher): Likewise.
(MacroExpander::match_n_matches): Likewise.
* expand/rust-macro-substitute-ctx.cc (SubstituteCtx::substitute_token): Likewise.
* expand/rust-proc-macro.h (load_macros): Likewise.
(generate_proc_macro_decls_symbol): Likewise.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_generic_args): Likewise.
(ASTLoweringBase::lower_range_pattern_bound): Likewise.
* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
* hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Likewise.
* hir/rust-ast-lower.h (struct_field_name_exists): Likewise.
(translate_visibility): Likewise.
* hir/rust-hir-dump.cc (Dump::visit): Likewise.
* hir/rust-hir-dump.h (debug): Likewise.
* hir/tree/rust-hir.cc (UseTreeGlob::as_string): Likewise.
(UseTreeList::as_string): Likewise.
* lex/rust-lex.cc (Lexer::parse_escape): Likewise.
(Lexer::parse_utf8_escape): Likewise.
* lex/rust-lex.h (rust_input_source_test): Likewise.
* lex/rust-token.cc (RS_TOKEN_KEYWORD_2015): Likewise.
* lex/rust-token.h (get_token_description): Likewise.
(token_id_to_str): Likewise.
(token_id_is_keyword): Likewise.
(token_id_keyword_string): Likewise.
(get_type_hint_string): Likewise.
(nfc_normalize_token_string): Likewise.
* metadata/rust-export-metadata.cc (PublicInterface::write_to_path): Likewise.
* metadata/rust-import-archive.cc: Likewise.
* metadata/rust-imports.h (add_search_path): Likewise.
* parse/rust-cfg-parser.h (parse_cfg_option): Likewise.
(rust_cfg_parser_test): Likewise.
* parse/rust-parse-impl.h (Parser::skip_generics_right_angle): Likewise.
(Parser::parse_attr_input): Likewise.
(Parser::parse_macro_match): Likewise.
(Parser::parse_visibility): Likewise.
(Parser::parse_module): Likewise.
(Parser::parse_use_tree): Likewise.
(Parser::parse_generic_param): Likewise.
(Parser::parse_struct): Likewise.
(Parser::parse_enum_item): Likewise.
(Parser::parse_inherent_impl_item): Likewise.
(Parser::parse_external_item): Likewise.
(Parser::parse_generic_arg): Likewise.
(Parser::parse_type_path_segment): Likewise.
(Parser::parse_expr_stmt): Likewise.
(Parser::parse_if_expr): Likewise.
(Parser::parse_if_let_expr): Likewise.
(Parser::parse_type): Likewise.
(Parser::parse_for_prefixed_type): Likewise.
(Parser::parse_slice_or_array_type): Likewise.
(Parser::parse_type_no_bounds): Likewise.
(Parser::parse_range_pattern_bound): Likewise.
(Parser::parse_pattern_no_alt): Likewise.
(Parser::parse_grouped_or_tuple_pattern): Likewise.
(Parser::parse_ident_leading_pattern): Likewise.
(Parser::parse_tuple_struct_items): Likewise.
(Parser::parse_stmt_or_expr): Likewise.
(Parser::parse_struct_expr_field): Likewise.
(Parser::null_denotation): Likewise.
(Parser::left_denotation): Likewise.
(Parser::parse_closure_expr_pratt): Likewise.
* parse/rust-parse.cc (peculiar_fragment_match_compatible): Likewise.
(is_match_compatible): Likewise.
* parse/rust-parse.h (extract_module_path): Likewise.
(is_match_compatible): Likewise.
* resolve/rust-ast-resolve-expr.cc (translate_operand): Likewise.
* resolve/rust-ast-resolve-item.cc (flatten_glob): Likewise.
(flatten_rebind): Likewise.
(flatten_list): Likewise.
(flatten): Likewise.
* resolve/rust-ast-resolve-item.h (rust_simple_path_resolve_test): Likewise.
* resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Likewise.
(resolve_range_pattern_bound): Likewise.
* resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise.
(ResolveTypeToCanonicalPath::visit): Likewise.
* resolve/rust-ast-resolve.cc (saw_errors): Likewise.
* resolve/rust-early-name-resolver-2.0.cc (Early::finalize_rebind_import): Likewise.
* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Likewise.
* resolve/rust-toplevel-name-resolver-2.0.cc (flatten_glob): Likewise.
* rust-backend.h (init): Likewise.
(debug): Likewise.
(get_identifier_node): Likewise.
(wchar_type): Likewise.
(get_pointer_size): Likewise.
(raw_str_type): Likewise.
(integer_type): Likewise.
(float_type): Likewise.
(pointer_type): Likewise.
(reference_type): Likewise.
(immutable_type): Likewise.
(function_type): Likewise.
(function_type_variadic): Likewise.
(function_ptr_type): Likewise.
(struct_type): Likewise.
(union_type): Likewise.
(array_type): Likewise.
(named_type): Likewise.
(type_field_offset): Likewise.
(var_expression): Likewise.
(float_constant_expression): Likewise.
(string_constant_expression): Likewise.
(char_constant_expression): Likewise.
(wchar_constant_expression): Likewise.
(boolean_constant_expression): Likewise.
(convert_expression): Likewise.
(struct_field_expression): Likewise.
(compound_expression): Likewise.
(conditional_expression): Likewise.
(negation_expression): Likewise.
(arithmetic_or_logical_expression): Likewise.
(arithmetic_or_logical_expression_checked): Likewise.
(comparison_expression): Likewise.
(lazy_boolean_expression): Likewise.
(constructor_expression): Likewise.
(array_constructor_expression): Likewise.
(array_initializer): Likewise.
(array_index_expression): Likewise.
(call_expression): Likewise.
(init_statement): Likewise.
(assignment_statement): Likewise.
(return_statement): Likewise.
(if_statement): Likewise.
(loop_expression): Likewise.
(exit_expression): Likewise.
(statement_list): Likewise.
(exception_handler_statement): Likewise.
(block): Likewise.
(block_add_statements): Likewise.
(global_variable): Likewise.
(global_variable_set_init): Likewise.
(local_variable): Likewise.
(parameter_variable): Likewise.
(static_chain_variable): Likewise.
(temporary_variable): Likewise.
(label): Likewise.
(function): Likewise.
(function_defer_statement): Likewise.
(function_set_parameters): Likewise.
(write_global_definitions): Likewise.
(fill_in_fields): Likewise.
* rust-diagnostics.cc (expand_format): Likewise.
(expand_message): Likewise.
(va_constructor): Likewise.
* rust-diagnostics.h (RUST_ATTRIBUTE_GCC_DIAG): Likewise.
(rust_open_quote): Likewise.
(rust_close_quote): Likewise.
(rust_debug_loc): Likewise.
* rust-gcc.cc (non_zero_size_type): Likewise.
* rust-object-export.h (rust_field_alignment): Likewise.
(rust_read_export_data): Likewise.
(rust_write_export_data): Likewise.
* rust-session-manager.cc (saw_errors): Likewise.
(rust_get_linemap): Likewise.
(validate_crate_name): Likewise.
(Session::load_extern_crate): Likewise.
* rust-session-manager.h (rust_crate_name_validation_test): Likewise.
* rust-system.h (rust_preserve_from_gc): Likewise.
(rust_localize_identifier): Likewise.
* rust-target.h (rust_add_target_info): Likewise.
* typecheck/rust-autoderef.cc:
* typecheck/rust-casts.cc (TypeCastRules::cast_rules): Likewise.
* typecheck/rust-coercion.cc (TypeCoercionRules::do_coercion): Likewise.
(TypeCoercionRules::coerce_unsafe_ptr): Likewise.
(TypeCoercionRules::coerce_borrowed_pointer): Likewise.
* typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): Likewise.
(TraitItemReference::is_object_safe): Likewise.
* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): Likewise.
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
(typecheck_inline_asm_operand): Likewise.
* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise.
(TypeCheckImplItemWithTrait::visit): Likewise.
* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
* typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::visit): Likewise.
* typecheck/rust-hir-type-check-type.cc
(TypeResolveGenericParam::apply_trait_bounds): Likewise.
(ResolveWhereClauseItem::visit): Likewise.
* typecheck/rust-hir-type-check.cc (saw_errors): Likewise.
(TraitItemReference::get_type_from_fn): Likewise.
* typecheck/rust-type-util.h (query_type): Likewise.
(types_compatable): Likewise.
(unify_site): Likewise.
(unify_site_and): Likewise.
(coercion_site): Likewise.
(try_coercion): Likewise.
(cast_site): Likewise.
* typecheck/rust-tyty-bounds.cc:
* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Likewise.
* typecheck/rust-tyty-cmp.h:
* typecheck/rust-tyty-variance-analysis.h (query_field_regions): Likewise.
* typecheck/rust-tyty.cc (BaseType::is_unit): Likewise.
(BaseType::has_substitutions_defined): Likewise.
(BaseType::needs_generic_substitutions): Likewise.
(BaseType::get_subst_argument_mappings): Likewise.
(InferType::default_type): Likewise.
(InferType::apply_primitive_type_hint): Likewise.
* typecheck/rust-tyty.h (is_primitive_type_kind): Likewise.
* typecheck/rust-unify.cc (UnifyRules::expect_inference_variable): Likewise.
(UnifyRules::expect_adt): Likewise.
(UnifyRules::expect_str): Likewise.
(UnifyRules::expect_reference): Likewise.
(UnifyRules::expect_pointer): Likewise.
(UnifyRules::expect_param): Likewise.
(UnifyRules::expect_array): Likewise.
(UnifyRules::expect_slice): Likewise.
(UnifyRules::expect_fndef): Likewise.
(UnifyRules::expect_fnptr): Likewise.
(UnifyRules::expect_tuple): Likewise.
(UnifyRules::expect_bool): Likewise.
(UnifyRules::expect_char): Likewise.
(UnifyRules::expect_int): Likewise.
(UnifyRules::expect_uint): Likewise.
(UnifyRules::expect_float): Likewise.
(UnifyRules::expect_isize): Likewise.
(UnifyRules::expect_usize): Likewise.
(UnifyRules::expect_never): Likewise.
(UnifyRules::expect_placeholder): Likewise.
(UnifyRules::expect_projection): Likewise.
(UnifyRules::expect_dyn): Likewise.
(UnifyRules::expect_closure): Likewise.
(UnifyRules::expect_opaque): Likewise.
* util/rust-abi.h (get_abi_from_string): Likewise.
(get_string_from_abi): Likewise.
* util/rust-attributes.cc (check_doc_attribute): Likewise.
* util/rust-base62.h (base62_integer): Likewise.
* util/rust-dir-owner.h (get_file_subdir): Likewise.
* util/rust-edition.h (get_rust_edition): Likewise.
* util/rust-punycode.h (encode_punycode): Likewise.
(rust_punycode_encode_test): Likewise.
* util/rust-token-converter.cc (convert): Likewise.
(from_tokenstream): Likewise.
* util/rust-token-converter.h (convert): Likewise.
(convert_literal): Likewise.
* util/rust-unicode.h (is_alphabetic): Likewise.
(is_ascii_only): Likewise.
(is_numeric): Likewise.
(is_nfc_qc_no): Likewise.
(is_nfc_qc_maybe): Likewise.
(nfc_quick_check): Likewise.
(rust_nfc_qc_test): Likewise.
(rust_utf8_normalize_test): Likewise.
(rust_utf8_property_test): Likewise.
* util/rust-unwrap-segment.h (unwrap_segment_node_id): Likewise.
libgrust/ChangeLog:
* libproc_macro_internal/ffistring.h (FFIString__new): Likewise.
(FFIString__drop): Likewise.
* libproc_macro_internal/ident.h (Ident__new): Likewise.
(Ident__new_raw): Likewise.
(Ident__drop): Likewise.
(Ident__clone): Likewise.
* libproc_macro_internal/literal.h (Literal__from_string): Likewise.
* libproc_macro_internal/proc_macro.h (bridge_is_available): Likewise.
* libproc_macro_internal/tokenstream.h (TokenStream__new): Likewise.
(TokenStream__with_capacity): Likewise.
(TokenSream__push): Likewise.
(TokenStream__from_string): Likewise.
(TokenStream__clone): Likewise.
(TokenStream__drop): Likewise.
|
|
This patch ensuers we reuse the Builder for new type to
ensure we create a new type from scratch ensuring consistent
new node-ids.
gcc/rust/ChangeLog:
* expand/rust-derive-default.cc (DeriveDefault::visit_struct): use builder
(DeriveDefault::visit_tuple): likewise
* expand/rust-derive-eq.cc (DeriveEq::visit_tuple): likewise
(DeriveEq::visit_struct): likewise
(DeriveEq::visit_enum): likewise
(DeriveEq::visit_union): likewise
gcc/testsuite/ChangeLog:
* rust/compile/nr2/exclude: these are fixed now
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc (TokenCollector::visit): Implement for InlineAsm.
* ast/rust-ast-full-decls.h (enum class): Move InlineAsmOption enum inside InlineAsm.
* ast/rust-expr.h (enum class): Likewise.
(class InlineAsm): 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.cc (InlineAsm::InlineAsm): Likewise.
* hir/tree/rust-hir-expr.h: Likewise.
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
|
|
gcc/rust/ChangeLog:
* expand/rust-derive-partial-eq.cc (DerivePartialEq::match_enum_tuple): Remove debug call.
(DerivePartialEq::match_enum_struct): Add proper implementation.
(DerivePartialEq::visit_enum): Call it.
gcc/testsuite/ChangeLog:
* rust/execute/torture/derive-partialeq2.rs: New test.
|
|
Both nodes had the same id, this led to a resolution conflict.
gcc/rust/ChangeLog:
* expand/rust-derive-clone.cc (DeriveClone::clone_enum_struct): Clone
path to avoid using the same nodeid.
gcc/testsuite/ChangeLog:
* rust/compile/nr2/exclude: Remove now passing test from exclusion
list.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
We have an assertion when accessing generic args if there are any which
is really useful so this adds the missing guards for the case where
they are specified but empty.
Fixes Rust-GCC#3649
gcc/rust/ChangeLog:
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): add guard
* expand/rust-expand-visitor.cc (ExpandVisitor::visit): add guard
gcc/testsuite/ChangeLog:
* rust/compile/nr2/exclude: nr2 is missing error for this
* rust/compile/issue-3649.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
Add a new HIR LlvmInlineAsm HIR node as well as some structures to
represent it's options and operands. Lower AST::LlvmInlineAsm node to it
and then create a tree from that node.
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc (TokenCollector::visit): Remove unreachable
code.
* ast/rust-expr.h (struct LlvmOperand): Add LlvmOperand struct to
represent input and outputs.
(class LlvmInlineAsm): Add input, output and clobber operands.
(struct TupleTemplateStr): Add locus getter.
* backend/rust-compile-block.h: Add visit for LlvmInlineAsm.
* backend/rust-compile-expr.cc (CompileExpr::visit): Add llvm inline
asm stmt compilation.
* backend/rust-compile-expr.h: Add function prototype.
* backend/rust-compile-asm.h (class CompileLlvmAsm): Add llvm asm hir
not to gimple.
* backend/rust-compile-asm.cc (CompileLlvmAsm::CompileLlvmAsm): Add
constructor.
(CompileLlvmAsm::construct_operands): Add function to construct operand
tree.
(CompileLlvmAsm::construct_clobbers): Add function to construct clobber
tree.
(CompileLlvmAsm::tree_codegen_asm): Generate the whole tree for a given
llvm inline assembly node.
* checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit):
Add visit function.
* checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Add function
prototype.
* checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: Add visit
function.
* checks/errors/borrowck/rust-bir-builder-struct.h: Likewise.
* checks/errors/borrowck/rust-function-collector.h: Likewise.
* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit):
Likewise.
* checks/errors/privacy/rust-privacy-reporter.h: Add visit function
prototype.
* checks/errors/rust-const-checker.cc (ConstChecker::visit): Add visit
function.
* checks/errors/rust-const-checker.h: Add visit function prototype.
* checks/errors/rust-hir-pattern-analysis.cc (PatternChecker::visit):
Add visit function.
* checks/errors/rust-hir-pattern-analysis.h: Add visit function
prototype.
* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Add
visit function.
* checks/errors/rust-unsafe-checker.h: Add function prototype.
* expand/rust-macro-builtins-asm.cc (parse_llvm_templates): Parse
templates.
(parse_llvm_arguments): Add function to parse non template tokens.
(parse_llvm_operands): Add function to parse operands, either input or
output.
(parse_llvm_outputs): Add function to parse and collect llvm asm
outputs.
(parse_llvm_inputs): Likewise with inputs.
(parse_llvm_clobbers): Add function to parse llvm asm clobbers.
(parse_llvm_options): Add function to parse llvm asm options.
(parse_llvm_asm): Add function to parse llvm asm.
* expand/rust-macro-builtins-asm.h (class LlvmAsmContext): Add context
for llvm asm parser.
(parse_llvm_outputs): Add function prototype.
(parse_llvm_inputs): Likewise.
(parse_llvm_clobbers): Likewise.
(parse_llvm_options): Likewise.
* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Lower AST llvm
asm node to HIR.
* hir/rust-ast-lower-expr.h: Add function prototype.
* hir/rust-hir-dump.cc (Dump::visit): Add visit function.
* hir/rust-hir-dump.h: Add function prototype.
* hir/tree/rust-hir-expr-abstract.h: Add HIR llvm asm node kind.
* hir/tree/rust-hir-expr.h (struct LlvmOperand): Add LlvmOperand type
to represent input and outputs.
(class LlvmInlineAsm): Add LlvmInlineAsm hir node.
* hir/tree/rust-hir-full-decls.h (class LlvmInlineAsm): Add
LlvmInlineAsm hir node forward declaration.
* hir/tree/rust-hir-visitor.h: Add visit functions for LlvmInlineAsm
hir node.
* hir/tree/rust-hir.cc (LlvmInlineAsm::accept_vis): Add hir node
visitor related functions.
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
Type check input and output operands.
* typecheck/rust-hir-type-check-expr.h: Add function prototype.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Visit input and
output operand expressions.
* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve input
and output expressions.
* resolve/rust-ast-resolve-expr.h: Add function prototypes.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
InlineAsm node does not support memory clobbers.
gcc/rust/ChangeLog:
* ast/rust-ast-collector.cc (TokenCollector::visit): Make visitor
unreachable.
* ast/rust-ast-collector.h: Add visit for LlvmInlineAsmNode.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Add visit
function for the default ast visitor.
* ast/rust-ast-visitor.h: Add function prototype.
* ast/rust-ast.cc (LlvmInlineAsm::accept_vis): Add accept_vis to
LlvmInlineAsm node.
* ast/rust-ast.h: Add LlvmInlineAsm node kind.
* ast/rust-expr.h (class LlvmInlineAsm): Add LlvmInlineAsm node.
* expand/rust-derive.h: Add visit function for LlvmInlineAsm node.
* expand/rust-macro-builtins-asm.cc (MacroBuiltin::llvm_asm_handler):
Add handler for llvm inline assembly nodes.
(parse_llvm_asm): Add function to parse llvm assembly nodes.
* expand/rust-macro-builtins-asm.h (parse_llvm_asm): Add function
prototypes.
* expand/rust-macro-builtins.cc (inline_llvm_asm_maker): Add macro
transcriber.
* expand/rust-macro-builtins.h: Add transcriber function prototype.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add visit
function for LlvmInlineAsm node.
* hir/rust-ast-lower-base.h: Add visit function prototype.
* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add visit
function for LlvmInlineAsm node.
* resolve/rust-ast-resolve-base.h: Add visit function prototype.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-asm.cc (parse_asm_arg): Emit error
message.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* util/rust-attribute-values.h: Add RUSTFMT value.
* util/rust-attributes.cc: Define the attribute.
* util/rust-attributes.h (enum CompilerPass): Add EXTERNAL variant.
* expand/rust-macro-builtins.cc: Fix formatting.
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins.cc (MacroBuiltin::builtin_transcribers):
Add entry for track_caller.
* util/rust-attribute-values.h: add `TRACK_CALLER` attribute.
* util/rust-attributes.cc: add `track_caller` attribute definition.
gcc/testsuite/ChangeLog:
* rust/compile/track_caller.rs: New test.
Signed-off-by: Bhavesh Mandalapu <mandalapubhavesh@gmail.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-builtins-format-args.cc (format_args_parse_arguments): Improve safety,
allow extra commas after end of argument list.
gcc/testsuite/ChangeLog:
* rust/compile/format_args_extra_comma.rs: New test.
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-expand.cc (MacroExpander::expand_decl_macro): Call into
TokenTreeDesugar.
* expand/rust-token-tree-desugar.cc: New file.
* expand/rust-token-tree-desugar.h: New file.
* Make-lang.in: Compile them.
gcc/testsuite/ChangeLog:
* rust/compile/macros/mbe/macro-issue3709-1.rs: New test.
* rust/compile/macros/mbe/macro-issue3709-2.rs: New test.
|