Skip to content

Commit f4cd142

Browse files
committed
Mark float intrinsics with no preconditions as safe
1 parent 06708b8 commit f4cd142

File tree

13 files changed

+216
-175
lines changed

13 files changed

+216
-175
lines changed

compiler/rustc_hir_analysis/src/check/intrinsic.rs

Lines changed: 74 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,40 +81,93 @@ fn intrinsic_operation_unsafety(tcx: TyCtxt<'_>, intrinsic_id: LocalDefId) -> hi
8181
| sym::bswap
8282
| sym::caller_location
8383
| sym::carrying_mul_add
84+
| sym::ceilf16
85+
| sym::ceilf32
86+
| sym::ceilf64
87+
| sym::ceilf128
8488
| sym::cold_path
8589
| sym::const_eval_select
8690
| sym::contract_check_ensures
8791
| sym::contract_check_requires
8892
| sym::contract_checks
93+
| sym::cosf16
94+
| sym::cosf32
95+
| sym::cosf64
96+
| sym::cosf128
8997
| sym::ctlz
9098
| sym::ctpop
9199
| sym::cttz
92100
| sym::discriminant_value
101+
| sym::exp2f16
102+
| sym::exp2f32
103+
| sym::exp2f64
104+
| sym::exp2f128
105+
| sym::expf16
106+
| sym::expf32
107+
| sym::expf64
108+
| sym::expf128
93109
| sym::fadd_algebraic
110+
| sym::fadd_fast
94111
| sym::fdiv_algebraic
112+
| sym::fdiv_fast
113+
| sym::floorf16
114+
| sym::floorf32
115+
| sym::floorf64
116+
| sym::floorf128
117+
| sym::fmaf16
118+
| sym::fmaf32
119+
| sym::fmaf64
120+
| sym::fmaf128
95121
| sym::fmul_algebraic
122+
| sym::fmul_fast
123+
| sym::fmuladdf16
124+
| sym::fmuladdf32
125+
| sym::fmuladdf64
126+
| sym::fmuladdf128
96127
| sym::forget
97128
| sym::frem_algebraic
129+
| sym::frem_fast
98130
| sym::fsub_algebraic
131+
| sym::fsub_fast
99132
| sym::is_val_statically_known
100-
| sym::maximumf128
133+
| sym::log2f16
134+
| sym::log2f32
135+
| sym::log2f64
136+
| sym::log2f128
137+
| sym::log10f16
138+
| sym::log10f32
139+
| sym::log10f64
140+
| sym::log10f128
141+
| sym::logf16
142+
| sym::logf32
143+
| sym::logf64
144+
| sym::logf128
101145
| sym::maximumf16
102146
| sym::maximumf32
103147
| sym::maximumf64
104-
| sym::maxnumf128
148+
| sym::maximumf128
105149
| sym::maxnumf16
106150
| sym::maxnumf32
107151
| sym::maxnumf64
108-
| sym::minimumf128
152+
| sym::maxnumf128
109153
| sym::minimumf16
110154
| sym::minimumf32
111155
| sym::minimumf64
112-
| sym::minnumf128
156+
| sym::minimumf128
113157
| sym::minnumf16
114158
| sym::minnumf32
115159
| sym::minnumf64
160+
| sym::minnumf128
116161
| sym::mul_with_overflow
117162
| sym::needs_drop
163+
| sym::powf16
164+
| sym::powf32
165+
| sym::powf64
166+
| sym::powf128
167+
| sym::powif16
168+
| sym::powif32
169+
| sym::powif64
170+
| sym::powif128
118171
| sym::prefetch_read_data
119172
| sym::prefetch_read_instruction
120173
| sym::prefetch_write_data
@@ -124,17 +177,33 @@ fn intrinsic_operation_unsafety(tcx: TyCtxt<'_>, intrinsic_id: LocalDefId) -> hi
124177
| sym::ptr_metadata
125178
| sym::rotate_left
126179
| sym::rotate_right
127-
| sym::round_ties_even_f128
128180
| sym::round_ties_even_f16
129181
| sym::round_ties_even_f32
130182
| sym::round_ties_even_f64
183+
| sym::round_ties_even_f128
184+
| sym::roundf16
185+
| sym::roundf32
186+
| sym::roundf64
187+
| sym::roundf128
131188
| sym::rustc_peek
132189
| sym::saturating_add
133190
| sym::saturating_sub
134191
| sym::select_unpredictable
192+
| sym::sinf16
193+
| sym::sinf32
194+
| sym::sinf64
195+
| sym::sinf128
135196
| sym::size_of
197+
| sym::sqrtf16
198+
| sym::sqrtf32
199+
| sym::sqrtf64
200+
| sym::sqrtf128
136201
| sym::sub_with_overflow
137202
| sym::three_way_compare
203+
| sym::truncf16
204+
| sym::truncf32
205+
| sym::truncf64
206+
| sym::truncf128
138207
| sym::type_id
139208
| sym::type_id_eq
140209
| sym::type_name

library/compiler-builtins/libm/src/math/support/float_traits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ macro_rules! float_impl {
289289
cfg_if! {
290290
// fma is not yet available in `core`
291291
if #[cfg(intrinsics_enabled)] {
292-
unsafe{ core::intrinsics::$fma_intrinsic(self, y, z) }
292+
core::intrinsics::$fma_intrinsic(self, y, z)
293293
} else {
294294
super::super::$fma_fn(self, y, z)
295295
}

0 commit comments

Comments
 (0)