diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-07-09 13:44:52 +0200 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-07-14 17:03:20 +0000 |
commit | 866512cbc09bc883ef844b2b6cb70a72335756a7 (patch) | |
tree | 3048b3a58c729e52362df0313893d0f3c67766b4 /gcc/rust/parse/rust-parse-impl.h | |
parent | a34d6675726d3c88c4c1d2860ea00884a36406f2 (diff) | |
download | gcc-866512cbc09bc883ef844b2b6cb70a72335756a7.zip gcc-866512cbc09bc883ef844b2b6cb70a72335756a7.tar.gz gcc-866512cbc09bc883ef844b2b6cb70a72335756a7.tar.bz2 |
rust-unreachable: Add specific behavior for rust_unreachable
As discussed during the community call, rust_unreachable() should
always trigger an internal compiler error and should not offer
the behavior of __builtin_unreachable when asserts are disabled, unlike
gcc_unreachable().
gcc/rust/ChangeLog:
* rust-system.h (rust_unreachable): Change definition to fancy_abort
* ast/rust-ast-collector.cc (TokenCollector::visit): Use rust_unreachable
instead of gcc_unreachable.
(get_delimiters): Likewise.
* ast/rust-ast-dump.h: Likewise.
* ast/rust-ast-formatting.cc (get_string_in_delims): Likewise.
(get_mode_dump_desc): Likewise.
* ast/rust-ast.cc (Visibility::as_string): Likewise.
(UseTreeGlob::as_string): Likewise.
* ast/rust-ast.h: Likewise.
* ast/rust-macro.h: Likewise.
* ast/rust-path.h: Likewise.
* backend/rust-compile-expr.cc (sort_tuple_patterns): Likewise.
(CompileExpr::visit): Likewise.
(CompileExpr::generate_closure_fntype): Likewise.
* backend/rust-compile-intrinsic.cc (op_with_overflow_inner): Likewise.
* backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise.
(CompilePatternLet::visit): Likewise.
* backend/rust-constexpr.cc (base_field_constructor_elt): Likewise.
(eval_array_reference): Likewise.
(label_matches): Likewise.
(eval_store_expression): Likewise.
(eval_call_expression): Likewise.
(build_data_member_initialization): Likewise.
(array_index_cmp): Likewise.
(get_array_or_vector_nelts): Likewise.
(eval_bit_field_ref): Likewise.
(eval_loop_expr): Likewise.
(potential_constant_expression_1): Likewise.
* backend/rust-mangle.cc (v0_simple_type_prefix): Likewise.
(v0_type_prefix): Likewise.
(v0_mangle_item): Likewise.
(Mangler::mangle_item): Likewise.
* backend/rust-tree.cc (convert_to_void): Likewise.
(type_memfn_quals): Likewise.
(rs_tree_equal): Likewise.
(fold_offsetof): Likewise.
(fold_builtin_source_location): Likewise.
(lvalue_error): Likewise.
* backend/rust-tree.h (struct named_decl_hash): Likewise.
(struct named_label_hash): Likewise.
* checks/errors/privacy/rust-visibility-resolver.cc
(VisibilityResolver::resolve_visibility): Likewise.
(VisibilityResolver::visit): Likewise.
* checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Likewise.
* checks/errors/rust-feature.cc (Feature::create): Likewise.
* expand/rust-expand-visitor.cc (get_traits_to_derive): Likewise.
(derive_item): Likewise.
(expand_item_attribute): Likewise.
(expand_stmt_attribute): Likewise.
* expand/rust-macro-expand.cc (MacroExpander::match_matcher): Likewise.
(MacroExpander::match_repetition): Likewise.
(transcribe_context): Likewise.
(MacroExpander::import_proc_macros): Likewise.
(MacroExpander::parse_proc_macro_output): Likewise.
* expand/rust-macro-expand.h: Likewise.
* expand/rust-macro-invoc-lexer.h: Likewise.
* expand/rust-macro-substitute-ctx.cc (SubstituteCtx::substitute_token): Likewise.
* expand/rust-proc-macro-invoc-lexer.h: Likewise.
* expand/rust-proc-macro.cc (load_macros): Likewise.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_generic_args): Likewise.
(ASTLoweringBase::lower_literal): Likewise.
* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
* hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Likewise.
* hir/rust-ast-lower-type.cc (ASTLoweringType::visit): Likewise.
* hir/rust-hir-dump.cc (Dump::visit): Likewise.
* hir/tree/rust-hir.cc (get_string_in_delims): Likewise.
(Visibility::as_string): Likewise.
(UseTreeGlob::as_string): Likewise.
(CompoundAssignmentExpr::as_string): Likewise.
(ArithmeticOrLogicalExpr::as_string): Likewise.
* lex/rust-lex.cc (Lexer::parse_byte_string): Likewise.
(Lexer::parse_string): Likewise.
* lex/rust-token.cc (RS_TOKEN): Likewise.
* parse/rust-parse-impl.h (Parser::parse_simple_path_segment): Likewise.
(Parser::parse_path_ident_segment): Likewise.
(Parser::parse_attr_input): Likewise.
(Parser::parse_inherent_impl_item): Likewise.
(Parser::parse_trait_impl_item): Likewise.
(Parser::parse_type_path_segment): Likewise.
(Parser::parse_reference_type): Likewise.
(get_lbp_for_comparison_expr): Likewise.
* parse/rust-parse.cc (peculiar_fragment_match_compatible): Likewise.
* resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise.
* resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Likewise.
* resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise.
(ResolveTypeToCanonicalPath::visit): Likewise.
(ResolveGenericArgs::resolve_disambiguated_generic): Likewise.
* rust-gcc.cc (operator_to_tree_code): Likewise.
(fetch_overflow_builtins): Likewise.
(Gcc_backend::non_zero_size_type): Likewise.
(Gcc_backend::convert_tree): Likewise.
* rust-lang.cc (grs_langhook_type_for_mode): Likewise.
(grs_langhook_global_bindings_p): Likewise.
(grs_langhook_pushdecl): Likewise.
(grs_langhook_getdecls): Likewise.
(convert): Likewise.
* typecheck/rust-autoderef.h: Likewise.
* typecheck/rust-hir-path-probe.cc: Likewise.
* typecheck/rust-hir-trait-reference.cc (TraitItemReference::get_tyty): Likewise.
* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): Likewise.
* typecheck/rust-hir-type-check-expr.cc: Likewise.
* typecheck/rust-hir-type-check-expr.h: Likewise.
* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise.
* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
* typecheck/rust-hir-type-check-stmt.h: Likewise.
* typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
* typecheck/rust-substitution-mapper.h: Likewise.
* typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_context_type): Likewise.
* typecheck/rust-tyty-call.h: Likewise.
* typecheck/rust-tyty.cc (TypeKindFormat::to_string): Likewise.
(BaseType::monomorphized_clone): Likewise.
(VariantDef::variant_type_string): Likewise.
(ClosureType::handle_substitions): Likewise.
(IntType::as_string): Likewise.
(UintType::as_string): Likewise.
(FloatType::as_string): Likewise.
* typecheck/rust-unify.cc (UnifyRules::expect_projection): Likewise.
* util/rust-token-converter.cc (convert): Likewise.
(from_literal): Likewise.
(from_group): Likewise.
(from_tokentree): Likewise.
Diffstat (limited to 'gcc/rust/parse/rust-parse-impl.h')
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 06faaee..74d8d11 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -713,7 +713,7 @@ Parser<ManagedTokenSource>::parse_simple_path_segment () // test prevent error return AST::SimplePathSegment::create_error (); } - gcc_unreachable (); + rust_unreachable (); /*rust_error_at( t->get_locus(), "invalid token '%s' in simple path segment", t->get_token_description());*/ @@ -765,7 +765,7 @@ Parser<ManagedTokenSource>::parse_path_ident_segment () // test prevent error return AST::PathIdentSegment::create_error (); } - gcc_unreachable (); + rust_unreachable (); // not necessarily an error } @@ -876,7 +876,7 @@ Parser<ManagedTokenSource>::parse_attr_input () skip_after_end_attribute (); return nullptr; } - gcc_unreachable (); + rust_unreachable (); // TODO: find out how to stop gcc error on "no return value" } @@ -5534,7 +5534,7 @@ Parser<ManagedTokenSource>::parse_inherent_impl_item () lexer.skip_token (1); // TODO: is this right thing to do? return nullptr; } - gcc_unreachable (); + rust_unreachable (); default: add_error (Error (t->get_locus (), "unrecognised token %qs for item in inherent impl", @@ -5718,7 +5718,7 @@ Parser<ManagedTokenSource>::parse_trait_impl_item () lexer.skip_token (1); // TODO: is this right thing to do? return nullptr; } - gcc_unreachable (); + rust_unreachable (); default: break; } @@ -6703,7 +6703,7 @@ Parser<ManagedTokenSource>::parse_type_path_segment () new AST::TypePathSegment (std::move (ident_segment), has_separating_scope_resolution, locus)); } - gcc_unreachable (); + rust_unreachable (); } // Parses a function call representation inside a type path. @@ -9846,7 +9846,7 @@ Parser<ManagedTokenSource>::parse_reference_type () new AST::ReferenceType (false, parse_reference_type_inner (locus), locus)); default: - gcc_unreachable (); + rust_unreachable (); } } @@ -12337,7 +12337,7 @@ Parser<ManagedTokenSource>::null_denotation_path ( return std::unique_ptr<AST::PathInExpression> ( new AST::PathInExpression (std::move (path))); } - gcc_unreachable (); + rust_unreachable (); } // Handling of expresions that do not start with a path for `null_denotation`. @@ -12969,7 +12969,7 @@ get_lbp_for_arithmetic_or_logical_expr ( return LBP_R_SHIFT; default: // WTF? should not happen, this is an error - gcc_unreachable (); + rust_unreachable (); return LBP_PLUS; } @@ -13241,7 +13241,7 @@ get_lbp_for_comparison_expr (AST::ComparisonExpr::ExprType expr_type) return LBP_SMALLER_EQUAL; default: // WTF? should not happen, this is an error - gcc_unreachable (); + rust_unreachable (); return LBP_EQUAL; } @@ -13512,7 +13512,7 @@ get_lbp_for_compound_assignment_expr ( return LBP_R_SHIFT; default: // WTF? should not happen, this is an error - gcc_unreachable (); + rust_unreachable (); return LBP_PLUS; } |