rust/tests/ui/feature-gates
bors dfa88b328f Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin
Implement intrinsics with fallback bodies

fixes #93145 (though we can port many more intrinsics)
cc #63585

The way this works is that the backend logic for generating custom code for intrinsics has been made fallible. The only failure path is "this intrinsic is unknown". The `Instance` (that was `InstanceDef::Intrinsic`) then gets converted to `InstanceDef::Item`, which represents the fallback body. A regular function call to that body is then codegenned. This is currently implemented for

* codegen_ssa (so llvm and gcc)
* codegen_cranelift

other backends will need to adjust, but they can just keep doing what they were doing if they prefer (though adding new intrinsics to the compiler will then require them to implement them, instead of getting the fallback body).

cc `@scottmcm` `@WaffleLapkin`

### todo

* [ ] miri support
* [x] default intrinsic name to name of function instead of requiring it to be specified in attribute
* [x] make sure that the bodies are always available (must be collected for metadata)
2024-02-16 09:53:01 +00:00
..
auxiliary
allow-features-empty.rs
allow-features-empty.stderr
allow-features.rs
allow-features.stderr
bench.rs
bench.stderr
doc-rust-logo.rs
doc-rust-logo.stderr
duplicate-features.rs
duplicate-features.stderr
env-flag.rs
env-flag.stderr
feature-gate-abi_ptx.rs
feature-gate-abi_ptx.stderr
feature-gate-abi_unadjusted.rs
feature-gate-abi_unadjusted.stderr
feature-gate-abi-avr-interrupt.rs
feature-gate-abi-avr-interrupt.stderr
feature-gate-abi-msp430-interrupt.rs
feature-gate-abi-msp430-interrupt.stderr
feature-gate-abi-riscv-interrupt.rs
feature-gate-abi-riscv-interrupt.stderr
feature-gate-abi-x86-interrupt.rs
feature-gate-abi-x86-interrupt.stderr
feature-gate-abi.rs Check signature of intrinsics with fallback bodies 2024-02-12 17:44:53 +00:00
feature-gate-abi.stderr Check signature of intrinsics with fallback bodies 2024-02-12 17:44:53 +00:00
feature-gate-adt_const_params.rs
feature-gate-adt_const_params.stderr
feature-gate-alloc-error-handler.rs
feature-gate-alloc-error-handler.stderr
feature-gate-allocator_internals.rs
feature-gate-allocator_internals.stderr
feature-gate-allow-internal-unsafe-nested-macro.rs
feature-gate-allow-internal-unsafe-nested-macro.stderr
feature-gate-allow-internal-unstable-nested-macro.rs
feature-gate-allow-internal-unstable-nested-macro.stderr
feature-gate-allow-internal-unstable-struct.rs
feature-gate-allow-internal-unstable-struct.stderr
feature-gate-allow-internal-unstable.rs
feature-gate-allow-internal-unstable.stderr
feature-gate-arbitrary_self_types-raw-pointer.rs
feature-gate-arbitrary_self_types-raw-pointer.stderr
feature-gate-arbitrary-self-types.rs
feature-gate-arbitrary-self-types.stderr
feature-gate-asm_const.rs
feature-gate-asm_const.stderr
feature-gate-asm_experimental_arch.rs
feature-gate-asm_experimental_arch.stderr
feature-gate-asm_unwind.rs
feature-gate-asm_unwind.stderr
feature-gate-assoc-type-defaults.rs
feature-gate-assoc-type-defaults.stderr
feature-gate-associated_const_equality.rs
feature-gate-associated_const_equality.stderr
feature-gate-associated_type_bounds.rs No more associated type bounds in dyn trait 2024-02-10 03:23:51 +00:00
feature-gate-associated_type_bounds.stderr No more associated type bounds in dyn trait 2024-02-10 03:23:51 +00:00
feature-gate-auto-traits.rs
feature-gate-auto-traits.stderr
feature-gate-box_patterns.rs
feature-gate-box_patterns.stderr
feature-gate-builtin_syntax.rs
feature-gate-builtin_syntax.stderr
feature-gate-c_variadic.rs
feature-gate-c_variadic.stderr
feature-gate-cfg_overflow_checks.rs
feature-gate-cfg_overflow_checks.stderr
feature-gate-cfg_sanitize.rs
feature-gate-cfg_sanitize.stderr
feature-gate-cfg-relocation-model.rs
feature-gate-cfg-relocation-model.stderr
feature-gate-cfg-sanitizer_cfi.rs
feature-gate-cfg-sanitizer_cfi.stderr
feature-gate-cfg-target-abi.rs
feature-gate-cfg-target-abi.stderr
feature-gate-cfg-target-compact.rs
feature-gate-cfg-target-compact.stderr
feature-gate-cfg-target-has-atomic-equal-alignment.rs
feature-gate-cfg-target-has-atomic-equal-alignment.stderr
feature-gate-cfg-target-has-atomic.rs
feature-gate-cfg-target-has-atomic.stderr
feature-gate-cfg-target-thread-local.rs Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gate-cfg-target-thread-local.stderr Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gate-cfg-version.rs
feature-gate-cfg-version.stderr
feature-gate-cfi_encoding.rs
feature-gate-cfi_encoding.stderr
feature-gate-check-cfg.rs
feature-gate-check-cfg.stderr
feature-gate-closure_lifetime_binder.rs
feature-gate-closure_lifetime_binder.stderr
feature-gate-closure_track_caller.rs
feature-gate-closure_track_caller.stderr
feature-gate-collapse_debuginfo.rs
feature-gate-collapse_debuginfo.stderr
feature-gate-compiler-builtins.rs
feature-gate-compiler-builtins.stderr
feature-gate-concat_bytes.rs
feature-gate-concat_bytes.stderr
feature-gate-concat_idents2.rs
feature-gate-concat_idents2.stderr
feature-gate-concat_idents3.rs
feature-gate-concat_idents3.stderr
feature-gate-concat_idents.rs
feature-gate-concat_idents.stderr
feature-gate-const_refs_to_cell.rs
feature-gate-const-indexing.rs
feature-gate-const-refs-to-static.rs check_consts: fix some duplicate errors by not calling check_static unnecessarily 2024-02-11 15:12:10 +01:00
feature-gate-const-refs-to-static.stderr check_consts: fix some duplicate errors by not calling check_static unnecessarily 2024-02-11 15:12:10 +01:00
feature-gate-coroutines.e2024.stderr
feature-gate-coroutines.none.stderr
feature-gate-coroutines.rs
feature-gate-coverage-attribute.rs
feature-gate-coverage-attribute.stderr
feature-gate-custom_attribute2.rs
feature-gate-custom_attribute2.stderr
feature-gate-custom_attribute.rs
feature-gate-custom_attribute.stderr
feature-gate-custom_mir.rs Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gate-custom_mir.stderr Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gate-custom_test_frameworks.rs
feature-gate-custom_test_frameworks.stderr
feature-gate-decl_macro.rs
feature-gate-decl_macro.stderr
feature-gate-default_type_parameter_fallback.rs
feature-gate-default_type_parameter_fallback.stderr
feature-gate-deprecated_safe.rs
feature-gate-deprecated_safe.stderr
feature-gate-dispatch-from-dyn-cell.rs
feature-gate-dispatch-from-dyn-cell.stderr
feature-gate-dispatch-from-dyn-missing-impl.rs
feature-gate-dispatch-from-dyn-missing-impl.stderr
feature-gate-doc_cfg.rs
feature-gate-doc_cfg.stderr
feature-gate-doc_masked.rs
feature-gate-doc_masked.stderr
feature-gate-doc_notable_trait.rs
feature-gate-doc_notable_trait.stderr
feature-gate-exclusive-range-pattern.rs
feature-gate-exclusive-range-pattern.stderr
feature-gate-exhaustive-patterns.rs
feature-gate-exhaustive-patterns.stderr
feature-gate-explicit_tail_calls.rs
feature-gate-explicit_tail_calls.stderr
feature-gate-extern_absolute_paths.rs
feature-gate-extern_absolute_paths.stderr
feature-gate-extern_prelude.rs
feature-gate-extern_prelude.stderr
feature-gate-extern_types.rs
feature-gate-extern_types.stderr
feature-gate-feature-gate.rs
feature-gate-feature-gate.stderr
feature-gate-ffi_const.rs
feature-gate-ffi_const.stderr
feature-gate-ffi_pure.rs
feature-gate-ffi_pure.stderr
feature-gate-fn_align.rs
feature-gate-fn_align.stderr
feature-gate-fn_delegation.rs
feature-gate-fn_delegation.stderr
feature-gate-format_args_nl.rs
feature-gate-format_args_nl.stderr
feature-gate-fundamental.rs
feature-gate-fundamental.stderr
feature-gate-gen_blocks.e2024.stderr
feature-gate-gen_blocks.none.stderr
feature-gate-gen_blocks.rs
feature-gate-generic_arg_infer.normal.stderr
feature-gate-generic_arg_infer.rs
feature-gate-generic_associated_types_extended.rs
feature-gate-generic_associated_types_extended.stderr
feature-gate-impl_trait_in_assoc_type.rs
feature-gate-impl_trait_in_assoc_type.stderr
feature-gate-impl_trait_in_fn_trait_return.rs
feature-gate-impl_trait_in_fn_trait_return.stderr
feature-gate-imported_main.rs
feature-gate-imported_main.stderr
feature-gate-inherent_associated_types.rs
feature-gate-inherent_associated_types.stderr
feature-gate-inline_const_pat.rs
feature-gate-inline_const_pat.stderr
feature-gate-inline_const.rs
feature-gate-inline_const.stderr
feature-gate-intrinsics.rs Check signature of intrinsics with fallback bodies 2024-02-12 17:44:53 +00:00
feature-gate-intrinsics.stderr Check signature of intrinsics with fallback bodies 2024-02-12 17:44:53 +00:00
feature-gate-is_sorted.rs
feature-gate-is_sorted.stderr
feature-gate-lang-items.rs
feature-gate-lang-items.stderr
feature-gate-large-assignments.rs
feature-gate-large-assignments.stderr
feature-gate-lifetime-capture-rules-2024.rs
feature-gate-lifetime-capture-rules-2024.stderr
feature-gate-link_cfg.rs
feature-gate-link_cfg.stderr
feature-gate-link_llvm_intrinsics.rs
feature-gate-link_llvm_intrinsics.stderr
feature-gate-link-arg-attribute.rs
feature-gate-link-arg-attribute.stderr
feature-gate-linkage.rs
feature-gate-linkage.stderr
feature-gate-lint-reasons.rs
feature-gate-lint-reasons.stderr
feature-gate-log_syntax2.rs
feature-gate-log_syntax2.stderr
feature-gate-log_syntax2.stdout
feature-gate-log_syntax.rs
feature-gate-log_syntax.stderr
feature-gate-log_syntax.stdout
feature-gate-marker_trait_attr.rs
feature-gate-marker_trait_attr.stderr
feature-gate-may-dangle.rs
feature-gate-may-dangle.stderr
feature-gate-min_const_fn.rs
feature-gate-min_const_fn.stderr
feature-gate-more-qualified-paths.rs
feature-gate-more-qualified-paths.stderr
feature-gate-multiple_supertrait_upcastable.rs
feature-gate-multiple_supertrait_upcastable.stderr
feature-gate-naked_functions.rs Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gate-naked_functions.stderr Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gate-native_link_modifiers_as_needed.rs
feature-gate-native_link_modifiers_as_needed.stderr
feature-gate-needs-allocator.rs
feature-gate-needs-allocator.stderr
feature-gate-negate-unsigned.rs
feature-gate-negate-unsigned.stderr
feature-gate-negative_bounds.rs
feature-gate-negative_bounds.stderr
feature-gate-never_patterns.rs
feature-gate-never_patterns.stderr
feature-gate-never_type.rs Update never_type feature gate ui test 2024-02-01 20:01:05 +01:00
feature-gate-never_type.stderr Update never_type feature gate ui test 2024-02-01 20:01:05 +01:00
feature-gate-no_core.rs
feature-gate-no_core.stderr
feature-gate-no_sanitize.rs
feature-gate-no_sanitize.stderr
feature-gate-non_exhaustive_omitted_patterns_lint.rs
feature-gate-non_exhaustive_omitted_patterns_lint.stderr
feature-gate-non_lifetime_binders.rs
feature-gate-non_lifetime_binders.stderr
feature-gate-object_safe_for_dispatch.rs
feature-gate-object_safe_for_dispatch.stderr
feature-gate-offset-of-enum.rs
feature-gate-offset-of-enum.stderr Split remaining offset_of features into new tracking issues 2024-01-19 21:13:11 +00:00
feature-gate-offset-of-nested.rs
feature-gate-offset-of-nested.stderr Split remaining offset_of features into new tracking issues 2024-01-19 21:13:11 +00:00
feature-gate-omit-gdb-pretty-printer-section.rs
feature-gate-omit-gdb-pretty-printer-section.stderr
feature-gate-optimize_attribute.rs
feature-gate-optimize_attribute.stderr
feature-gate-overlapping_marker_traits.rs
feature-gate-overlapping_marker_traits.stderr
feature-gate-precise_pointer_size_matching.rs
feature-gate-precise_pointer_size_matching.stderr
feature-gate-prelude_import.rs
feature-gate-prelude_import.stderr
feature-gate-proc_macro_byte_character.rs
feature-gate-proc_macro_byte_character.stderr
feature-gate-proc_macro_c_str_literals.rs
feature-gate-proc_macro_c_str_literals.stderr
feature-gate-profiler-runtime.rs
feature-gate-profiler-runtime.stderr
feature-gate-public_private_dependencies.rs
feature-gate-register_tool.rs
feature-gate-register_tool.stderr
feature-gate-repr128.rs
feature-gate-repr128.stderr
feature-gate-repr-simd.rs
feature-gate-repr-simd.stderr
feature-gate-return_type_notation.cfg_current.stderr
feature-gate-return_type_notation.cfg_next.stderr
feature-gate-return_type_notation.cfg.stderr
feature-gate-return_type_notation.no_current.stderr
feature-gate-return_type_notation.no_next.stderr
feature-gate-return_type_notation.no.stderr
feature-gate-return_type_notation.rs
feature-gate-rust_cold_cc.rs
feature-gate-rust_cold_cc.stderr
feature-gate-rustc_const_unstable.rs
feature-gate-rustc_const_unstable.stderr
feature-gate-rustc-allow-const-fn-unstable.rs
feature-gate-rustc-allow-const-fn-unstable.stderr
feature-gate-rustc-attrs-1.rs
feature-gate-rustc-attrs-1.stderr
feature-gate-rustc-attrs.rs
feature-gate-rustc-attrs.stderr
feature-gate-rustdoc_internals.rs
feature-gate-rustdoc_internals.stderr
feature-gate-simd-ffi.rs
feature-gate-simd-ffi.stderr
feature-gate-simd.rs
feature-gate-simd.stderr
feature-gate-staged_api.rs
feature-gate-staged_api.stderr
feature-gate-start.rs
feature-gate-start.stderr
feature-gate-stmt_expr_attributes.rs
feature-gate-stmt_expr_attributes.stderr
feature-gate-strict_provenance.rs
feature-gate-strict_provenance.stderr
feature-gate-test_unstable_lint.rs
feature-gate-test_unstable_lint.stderr
feature-gate-thread_local.rs
feature-gate-thread_local.stderr
feature-gate-trace_macros.rs
feature-gate-trace_macros.stderr
feature-gate-trait_upcasting.rs Revert "Auto merge of #118133 - Urgau:stabilize_trait_upcasting, r=WaffleLapkin" 2024-01-22 14:24:31 +00:00
feature-gate-trait_upcasting.stderr Revert "Auto merge of #118133 - Urgau:stabilize_trait_upcasting, r=WaffleLapkin" 2024-01-22 14:24:31 +00:00
feature-gate-trait-alias.rs
feature-gate-trait-alias.stderr
feature-gate-transparent_unions.rs
feature-gate-transparent_unions.stderr
feature-gate-trivial_bounds-lint.rs
feature-gate-trivial_bounds.rs
feature-gate-trivial_bounds.stderr Provide more context on derived obligation error primary label 2024-01-30 21:28:18 +00:00
feature-gate-try_blocks.rs
feature-gate-try_blocks.stderr
feature-gate-type_alias_impl_trait.rs
feature-gate-type_ascription.rs
feature-gate-type_ascription.stderr
feature-gate-type_privacy_lints.rs
feature-gate-type_privacy_lints.stderr
feature-gate-unboxed-closures-manual-impls.rs
feature-gate-unboxed-closures-manual-impls.stderr
feature-gate-unboxed-closures-method-calls.rs
feature-gate-unboxed-closures-method-calls.stderr
feature-gate-unboxed-closures-ufcs-calls.rs
feature-gate-unboxed-closures-ufcs-calls.stderr
feature-gate-unboxed-closures.rs
feature-gate-unboxed-closures.stderr
feature-gate-unix_sigpipe.rs
feature-gate-unix_sigpipe.stderr
feature-gate-unnamed_fields.rs Check representation of unnamed fields 2024-02-12 12:47:31 +08:00
feature-gate-unnamed_fields.stderr Check representation of unnamed fields 2024-02-12 12:47:31 +08:00
feature-gate-unsafe_pin_internals.rs
feature-gate-unsafe_pin_internals.stderr
feature-gate-unsized_fn_params.rs
feature-gate-unsized_fn_params.stderr
feature-gate-unsized_locals.rs
feature-gate-unsized_locals.stderr
feature-gate-unsized_tuple_coercion.rs
feature-gate-unsized_tuple_coercion.stderr
feature-gate-used_with_arg.rs
feature-gate-used_with_arg.stderr
feature-gate-vectorcall.rs
feature-gate-vectorcall.stderr
feature-gate-wasm_abi.rs
feature-gate-wasm_abi.stderr
feature-gate-with_negative_coherence.rs
feature-gate-with_negative_coherence.stderr
feature-gate-yeet_expr-in-cfg.rs
feature-gate-yeet_expr-in-cfg.stderr
feature-gate-yeet_expr.rs
feature-gate-yeet_expr.stderr
feature-gated-feature-in-macro-arg.rs Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
feature-gated-feature-in-macro-arg.stderr Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
gated-bad-feature.rs
gated-bad-feature.stderr
issue-43106-gating-of-bench.rs Supress unhelpful diagnostics for unresolved top level attributes 2024-01-29 17:43:07 +08:00
issue-43106-gating-of-bench.stderr Supress unhelpful diagnostics for unresolved top level attributes 2024-01-29 17:43:07 +08:00
issue-43106-gating-of-builtin-attrs-error.rs
issue-43106-gating-of-builtin-attrs-error.stderr
issue-43106-gating-of-builtin-attrs.rs
issue-43106-gating-of-builtin-attrs.stderr
issue-43106-gating-of-deprecated.rs
issue-43106-gating-of-derive-2.rs
issue-43106-gating-of-derive-2.stderr
issue-43106-gating-of-derive.rs
issue-43106-gating-of-derive.stderr
issue-43106-gating-of-macro_escape.rs
issue-43106-gating-of-macro_escape.stderr
issue-43106-gating-of-macro_use.rs
issue-43106-gating-of-macro_use.stderr
issue-43106-gating-of-proc_macro_derive.rs
issue-43106-gating-of-proc_macro_derive.stderr
issue-43106-gating-of-stable.rs
issue-43106-gating-of-stable.stderr
issue-43106-gating-of-test.rs Supress unhelpful diagnostics for unresolved top level attributes 2024-01-29 17:43:07 +08:00
issue-43106-gating-of-test.stderr Supress unhelpful diagnostics for unresolved top level attributes 2024-01-29 17:43:07 +08:00
issue-43106-gating-of-unstable.rs
issue-43106-gating-of-unstable.stderr
issue-49983-see-issue-0.rs
issue-49983-see-issue-0.stderr
rustc-private.rs
rustc-private.stderr
soft-syntax-gates-with-errors.rs
soft-syntax-gates-with-errors.stderr
soft-syntax-gates-without-errors.rs
soft-syntax-gates-without-errors.stderr
stability-attribute-consistency.rs
stability-attribute-consistency.stderr
stable-features.rs
stable-features.stderr
test-listing-format-json.rs
test-listing-format-json.run.stderr
trace_macros-gate.rs
trace_macros-gate.stderr
unknown-feature.rs
unknown-feature.stderr
unstable-attribute-allow-issue-0.rs
unstable-attribute-allow-issue-0.stderr