1
Fork 0
rust/compiler
bors fd127a3a84 Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk
rustc_intrinsic: support functions without body

We synthesize a HIR body `loop {}` but such bodyless intrinsics.

Most of the diff is due to turning `ItemKind::Fn` into a brace (named-field) enum variant, because it carries a `bool`-typed field now. This is to remember whether the function has a body. MIR building panics to avoid ever translating the fake `loop {}` body, and the intrinsic logic uses the lack of a body to implicitly mark that intrinsic as must-be-overridden.

I first tried actually having no body rather than generating the fake body, but there's a *lot* of code that assumes that all function items have HIR and MIR, so this didn't work very well. Then I noticed that even `rustc_intrinsic_must_be_overridden` intrinsics have MIR generated (they are filled with an `Unreachable` terminator) so I guess I am not the first to discover this. ;)

r? `@oli-obk`
2025-01-04 12:50:38 +00:00
..
rustc switch jemalloc-sys back to tikv-jemalloc-sys, and update to 0.6.0 2024-12-03 08:56:33 +00:00
rustc_abi compiler: Add a statement-of-intent to rustc_abi 2024-12-30 15:21:27 -08:00
rustc_arena
rustc_ast upstream rustc_codegen_llvm changes for enzyme/autodiff 2025-01-01 21:42:45 +01:00
rustc_ast_ir
rustc_ast_lowering Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_ast_passes rustc_intrinsic: support functions without body; they are implicitly marked as must-be-overridden 2025-01-04 11:41:51 +01:00
rustc_ast_pretty Rollup merge of #134834 - dtolnay:unnamedcall, r=compiler-errors 2024-12-27 18:43:05 -08:00
rustc_attr_data_structures rename rustc_attr to rustc_attr_parsing and create rustc_attr_data_structures 2024-12-16 19:08:19 +01:00
rustc_attr_parsing Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_baked_icu_data Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_borrowck turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_builtin_macros Rollup merge of #134877 - DavisRayM:129966-format-string-help-message, r=estebank 2025-01-01 16:35:30 +11:00
rustc_codegen_cranelift Update compiler-builtins to 0.1.140 2024-12-27 22:26:08 +00:00
rustc_codegen_gcc upstream rustc_codegen_llvm changes for enzyme/autodiff 2025-01-01 21:42:45 +01:00
rustc_codegen_llvm Remove range-metadata amdgpu workaround 2025-01-02 15:45:04 +01:00
rustc_codegen_ssa Auto merge of #135067 - ChrisDenton:cc, r=jieyouxu 2025-01-04 07:18:33 +00:00
rustc_const_eval rustc_intrinsic: support functions without body; they are implicitly marked as must-be-overridden 2025-01-04 11:41:51 +01:00
rustc_data_structures MatchBranchSimplification: Consider empty-unreachable otherwise branch 2024-12-27 10:57:46 +00:00
rustc_driver
rustc_driver_impl Rollup merge of #131439 - mu001999-contrib:cleanup/static-mut, r=estebank 2025-01-01 16:35:29 +11:00
rustc_error_codes Rewrite the error-code docs for coverage attributes [E0788] 2024-12-25 19:23:48 +11:00
rustc_error_messages Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_errors Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_expand Rollup merge of #131522 - c410-f3r:unlock-rfc-2011, r=chenyukang 2024-12-26 21:56:47 -05:00
rustc_feature rustc_intrinsic: support functions without body; they are implicitly marked as must-be-overridden 2025-01-04 11:41:51 +01:00
rustc_fluent_macro
rustc_fs_util
rustc_graphviz
rustc_hir Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_hir_analysis Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_hir_pretty turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_hir_typeck Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_incremental turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_index improve bit_set assertion 2024-12-29 17:47:30 +00:00
rustc_index_macros update rustc_index_macros feature handling 2024-12-19 20:32:12 +03:00
rustc_infer Simplify declared_generic_bounds_from_env 2025-01-02 01:30:55 +00:00
rustc_interface Rollup merge of #134514 - bjorn3:more_driver_refactors, r=jieyouxu 2024-12-20 21:47:00 +08:00
rustc_lexer Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
rustc_lint turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_lint_defs Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_llvm Bump cc in the compiler 2025-01-03 11:51:13 +00:00
rustc_log
rustc_macros Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_metadata Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_middle Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_mir_build Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_mir_dataflow Auto merge of #134625 - compiler-errors:unsafe-binders-ty, r=oli-obk 2024-12-24 00:51:51 +00:00
rustc_mir_transform Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_monomorphize rustc_intrinsic: support functions without body; they are implicitly marked as must-be-overridden 2025-01-04 11:41:51 +01:00
rustc_next_trait_solver Also in the new solver 2025-01-03 05:22:14 +00:00
rustc_parse Rollup merge of #134884 - calciumbe:patch1, r=jieyouxu 2024-12-29 21:18:07 +01:00
rustc_parse_format add suggestion for wrongly ordered format parameters 2024-12-30 06:14:26 -08:00
rustc_passes turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_pattern_analysis Begin to implement type system layer of unsafe binders 2024-12-22 21:57:57 +00:00
rustc_privacy turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_query_impl Rename ty_def_id so people will stop using it by accident 2024-12-13 16:36:38 +00:00
rustc_query_system Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_resolve Fix spacing of markdown code block fences in compiler rustdoc 2024-12-22 10:16:31 -08:00
rustc_sanitizers Begin to implement type system layer of unsafe binders 2024-12-22 21:57:57 +00:00
rustc_serialize
rustc_session Make the test cfg a "userspace" check-cfg 2025-01-02 16:49:55 +01:00
rustc_smir Auto merge of #134625 - compiler-errors:unsafe-binders-ty, r=oli-obk 2024-12-24 00:51:51 +00:00
rustc_span Auto merge of #134757 - RalfJung:const_swap, r=scottmcm 2024-12-30 23:46:42 +00:00
rustc_symbol_mangling Begin to implement type system layer of unsafe binders 2024-12-22 21:57:57 +00:00
rustc_target Rollup merge of #133420 - thesummer:rtems-unwind, r=workingjubilee 2025-01-03 22:12:41 +01:00
rustc_trait_selection Auto merge of #135031 - RalfJung:intrinsics-without-body, r=oli-obk 2025-01-04 12:50:38 +00:00
rustc_traits Delay a bug when encountering an impl with unconstrained generics in codegen_select 2024-11-23 05:27:45 +00:00
rustc_transmute add comment explaining why ty_and_layout_field is not used 2024-12-18 11:01:54 +01:00
rustc_ty_utils nit: Make get_infer_ret_ty name more consistent with is_suggestable_infer_ty 2025-01-02 23:39:16 +00:00
rustc_type_ir Begin to implement type system layer of unsafe binders 2024-12-22 21:57:57 +00:00
rustc_type_ir_macros
stable_mir make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00