Skip to content

Commit 055e05a

Browse files
committed
Mark float intrinsics with no preconditions as safe
1 parent 987f960 commit 055e05a

File tree

19 files changed

+222
-188
lines changed

19 files changed

+222
-188
lines changed

compiler/rustc_hir_analysis/src/check/intrinsic.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,62 @@ 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
94110
| sym::fdiv_algebraic
111+
| sym::floorf16
112+
| sym::floorf32
113+
| sym::floorf64
114+
| sym::floorf128
115+
| sym::fmaf16
116+
| sym::fmaf32
117+
| sym::fmaf64
118+
| sym::fmaf128
95119
| sym::fmul_algebraic
120+
| sym::fmuladdf16
121+
| sym::fmuladdf32
122+
| sym::fmuladdf64
123+
| sym::fmuladdf128
96124
| sym::forget
97125
| sym::frem_algebraic
98126
| sym::fsub_algebraic
99127
| sym::is_val_statically_known
128+
| sym::log2f16
129+
| sym::log2f32
130+
| sym::log2f64
131+
| sym::log2f128
132+
| sym::log10f16
133+
| sym::log10f32
134+
| sym::log10f64
135+
| sym::log10f128
136+
| sym::logf16
137+
| sym::logf32
138+
| sym::logf64
139+
| sym::logf128
100140
| sym::maximumf16
101141
| sym::maximumf32
102142
| sym::maximumf64
@@ -115,6 +155,14 @@ fn intrinsic_operation_unsafety(tcx: TyCtxt<'_>, intrinsic_id: LocalDefId) -> hi
115155
| sym::minnumf128
116156
| sym::mul_with_overflow
117157
| sym::needs_drop
158+
| sym::powf16
159+
| sym::powf32
160+
| sym::powf64
161+
| sym::powf128
162+
| sym::powif16
163+
| sym::powif32
164+
| sym::powif64
165+
| sym::powif128
118166
| sym::prefetch_read_data
119167
| sym::prefetch_read_instruction
120168
| sym::prefetch_write_data
@@ -128,13 +176,29 @@ fn intrinsic_operation_unsafety(tcx: TyCtxt<'_>, intrinsic_id: LocalDefId) -> hi
128176
| sym::round_ties_even_f32
129177
| sym::round_ties_even_f64
130178
| sym::round_ties_even_f128
179+
| sym::roundf16
180+
| sym::roundf32
181+
| sym::roundf64
182+
| sym::roundf128
131183
| sym::rustc_peek
132184
| sym::saturating_add
133185
| sym::saturating_sub
134186
| sym::select_unpredictable
187+
| sym::sinf16
188+
| sym::sinf32
189+
| sym::sinf64
190+
| sym::sinf128
135191
| sym::size_of
192+
| sym::sqrtf16
193+
| sym::sqrtf32
194+
| sym::sqrtf64
195+
| sym::sqrtf128
136196
| sym::sub_with_overflow
137197
| sym::three_way_compare
198+
| sym::truncf16
199+
| sym::truncf32
200+
| sym::truncf64
201+
| sym::truncf128
138202
| sym::type_id
139203
| sym::type_id_eq
140204
| 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)