Auto merge of #120718 - saethlin:reasonable-fast-math, r=nnethercote
Add "algebraic" fast-math intrinsics, based on fast-math ops that cannot return poison Setting all of LLVM's fast-math flags makes our fast-math intrinsics very dangerous, because some inputs are UB. This set of flags permits common algebraic transformations, but according to the [LangRef](https://llvm.org/docs/LangRef.html#fastmath), only the flags `nnan` (no nans) and `ninf` (no infs) can produce poison. And this uses the algebraic float ops to fix https://github.com/rust-lang/rust/issues/120720 cc `@orlp`
This commit is contained in:
commit
bb8b11e67d
12 changed files with 226 additions and 14 deletions
|
@ -764,8 +764,10 @@ symbols! {
|
|||
f64_nan,
|
||||
fabsf32,
|
||||
fabsf64,
|
||||
fadd_algebraic,
|
||||
fadd_fast,
|
||||
fake_variadic,
|
||||
fdiv_algebraic,
|
||||
fdiv_fast,
|
||||
feature,
|
||||
fence,
|
||||
|
@ -785,6 +787,7 @@ symbols! {
|
|||
fmaf32,
|
||||
fmaf64,
|
||||
fmt,
|
||||
fmul_algebraic,
|
||||
fmul_fast,
|
||||
fn_align,
|
||||
fn_delegation,
|
||||
|
@ -810,6 +813,7 @@ symbols! {
|
|||
format_unsafe_arg,
|
||||
freeze,
|
||||
freg,
|
||||
frem_algebraic,
|
||||
frem_fast,
|
||||
from,
|
||||
from_desugaring,
|
||||
|
@ -823,6 +827,7 @@ symbols! {
|
|||
from_usize,
|
||||
from_yeet,
|
||||
fs_create_dir,
|
||||
fsub_algebraic,
|
||||
fsub_fast,
|
||||
fundamental,
|
||||
future,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue