rust/compiler
Matthias Krüger 1b4b0e9a4d
Rollup merge of #125834 - workingjubilee:weaken-thir-unsafeck-for-addr-of-static-mut, r=compiler-errors
treat `&raw (const|mut) UNSAFE_STATIC` implied deref as safe

Fixes rust-lang/rust#125833

As reported in that and related issues, `static mut STATIC_MUT: T` is very often used in embedded code, and is in many ways equivalent to `static STATIC_CELL: SyncUnsafeCell<T>`. The Rust expression of `&raw mut STATIC_MUT` and `SyncUnsafeCell::get(&STATIC_CELL)` are approximately equal, and both evaluate to `*mut T`. The library function is safe because it has *declared itself* to be safe. However, the raw ref operator is unsafe because all uses of `static mut` are considered unsafe, even though the static's value is not used by this expression (unlike, for example, `&STATIC_MUT`).

We can fix this unnatural difference by simply adding the proper exclusion for the safety check inside the THIR unsafeck, so that we do not declare it unsafe if it is not.

While the primary concern here is `static mut`, this change is made for all instances of an "unsafe static", which includes a static declared inside `extern "abi" {}`. Hypothetically, we could go as far as generalizing this to all instances of `&raw (const|mut) *ptr`, but today we do not, as we have not actually considered the range of possible expressions that use a similar encoding. We do not even extend this to thread-local equivalents, because they have less clear semantics.
2024-07-23 13:06:54 +02:00
..
rustc The rustc crate feature is called jemalloc 2024-07-15 13:01:20 -04:00
rustc_abi Rollup merge of #127769 - compiler-errors:ed-2024-dep, r=oli-obk 2024-07-17 16:22:31 +02:00
rustc_arena Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_ast Rollup merge of #127806 - nnethercote:parser-improvements, r=spastorino 2024-07-17 19:53:27 -05:00
rustc_ast_ir Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_ast_lowering Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
rustc_ast_passes Just totally fully deny late-bound consts 2024-07-20 19:45:24 -04:00
rustc_ast_pretty Rollup merge of #127092 - compiler-errors:rtn-dots-redux, r=estebank 2024-07-03 23:30:07 +02:00
rustc_attr Use a dedicated type instead of a reference for the diagnostic context 2024-06-18 15:42:11 +00:00
rustc_baked_icu_data Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_borrowck Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_builtin_macros Auto merge of #127722 - BoxyUwU:new_adt_const_params_limitations, r=compiler-errors 2024-07-21 05:36:21 +00:00
rustc_codegen_cranelift Rollup merge of #127177 - bjorn3:arm64_macos_cg_clif, r=Mark-Simulacrum 2024-07-22 16:44:02 +08:00
rustc_codegen_gcc Format cg_gcc with same formatting parameters 2024-07-17 20:22:07 +02:00
rustc_codegen_llvm Rollup merge of #127506 - liushuyu:s390x-target-features, r=davidtwco 2024-07-22 11:40:19 -05:00
rustc_codegen_ssa Rollup merge of #127506 - liushuyu:s390x-target-features, r=davidtwco 2024-07-22 11:40:19 -05:00
rustc_const_eval Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_data_structures Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_driver Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_driver_impl Move codegen_and_build_linker from Queries to Linker 2024-07-01 11:00:49 +00:00
rustc_error_codes Auto merge of #127722 - BoxyUwU:new_adt_const_params_limitations, r=compiler-errors 2024-07-21 05:36:21 +00:00
rustc_error_messages Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_errors Rollup merge of #120248 - WaffleLapkin:bonk-ptr-object-casts, r=compiler-errors,oli-obk,lnicola 2024-07-08 16:28:15 +02:00
rustc_expand Allow concat in repetitions 2024-07-19 21:00:46 -03:00
rustc_feature Rollup merge of #127506 - liushuyu:s390x-target-features, r=davidtwco 2024-07-22 11:40:19 -05:00
rustc_fluent_macro Avoid ref when using format! in compiler 2024-07-19 14:52:07 -04:00
rustc_fs_util Remove useless tidy-alphabetical markers. 2024-06-20 09:23:20 +10:00
rustc_graphviz Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_hir Auto merge of #127722 - BoxyUwU:new_adt_const_params_limitations, r=compiler-errors 2024-07-21 05:36:21 +00:00
rustc_hir_analysis Auto merge of #128041 - compiler-errors:uplift-errors-into-trait-sel, r=lcnr 2024-07-22 15:06:18 +00:00
rustc_hir_pretty Remove some unintended changes to imports 2024-07-17 20:31:37 -07:00
rustc_hir_typeck Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_incremental Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_index Fix feature gating on rustc_index to not use implicit features 2024-07-15 12:44:24 -04:00
rustc_index_macros Remove usage of specialization from newtype_index! 2024-06-30 16:42:53 +00:00
rustc_infer Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_interface Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_lexer Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_lint Rollup merge of #125990 - tbu-:pr_unsafe_env_lint_name, r=ehuss 2024-07-22 11:40:19 -05:00
rustc_lint_defs Rollup merge of #125990 - tbu-:pr_unsafe_env_lint_name, r=ehuss 2024-07-22 11:40:19 -05:00
rustc_llvm Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_log Bump tracing-tree and allow rendering lines again 2024-06-12 10:11:41 +00:00
rustc_macros lift_to_tcx -> lift_to_interner 2024-07-17 10:46:10 -04:00
rustc_metadata Auto merge of #120812 - compiler-errors:impl-sorting, r=lcnr 2024-07-21 22:43:47 +00:00
rustc_middle Auto merge of #127442 - saethlin:alloc-decoding-lock, r=oli-obk 2024-07-22 05:56:05 +00:00
rustc_mir_build Rollup merge of #125834 - workingjubilee:weaken-thir-unsafeck-for-addr-of-static-mut, r=compiler-errors 2024-07-23 13:06:54 +02:00
rustc_mir_dataflow Avoid ref when using format! in compiler 2024-07-19 14:52:07 -04:00
rustc_mir_transform Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_monomorphize Move compiler_builtin check to the use case 2024-07-15 23:43:52 +00:00
rustc_next_trait_solver Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_parse Auto merge of #127957 - matthiaskrgr:rollup-1u5ivck, r=matthiaskrgr 2024-07-19 13:39:12 +00:00
rustc_parse_format Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_passes Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_pattern_analysis Auto merge of #128015 - Nadrieril:two-step-or-expansion, r=compiler-errors 2024-07-23 06:35:42 +00:00
rustc_privacy Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
rustc_query_impl Allow tracing through item_bounds query invocations on opaques 2024-06-19 08:47:55 +00:00
rustc_query_system Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_resolve Just totally fully deny late-bound consts 2024-07-20 19:45:24 -04:00
rustc_sanitizers Rollup merge of #127980 - nyurik:compiler-refs, r=oli-obk 2024-07-20 07:13:45 +02:00
rustc_serialize chore: remove duplicate words 2024-07-02 11:25:31 +08:00
rustc_session Auto merge of #127670 - compiler-errors:no-type-length-limit, r=jackh726 2024-07-14 12:44:07 +00:00
rustc_smir Avoid comments that describe multiple use items. 2024-07-17 08:02:46 +10:00
rustc_span Rollup merge of #127506 - liushuyu:s390x-target-features, r=davidtwco 2024-07-22 11:40:19 -05:00
rustc_symbol_mangling Fix FnMut/Fn shim for coroutine-closures that capture references 2024-06-29 17:38:02 -04:00
rustc_target Rollup merge of #127506 - liushuyu:s390x-target-features, r=davidtwco 2024-07-22 11:40:19 -05:00
rustc_trait_selection Fix tools 2024-07-21 22:34:37 -04:00
rustc_traits Move all error reporting into rustc_trait_selection 2024-07-21 22:34:35 -04:00
rustc_transmute Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_ty_utils Auto merge of #123351 - beetrees:x86-ret-snan-rust, r=nikic,workingjubilee 2024-07-12 20:36:43 +00:00
rustc_type_ir Avoid ref when using format! in compiler 2024-07-19 14:52:07 -04:00
rustc_type_ir_macros lift_to_tcx -> lift_to_interner 2024-07-17 10:46:10 -04:00
stable_mir Avoid ref when using format! in compiler 2024-07-19 14:52:07 -04:00