aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2022-11-12 09:35:16 +0100
committerJakub Jelinek <jakub@redhat.com>2022-11-12 09:35:16 +0100
commit2d5c4a16dd833aa083f13dd3e78e3ef38afe6ebb (patch)
tree35c7d90ab5aa975e7b283f3070b02f4dca0d5c40 /gcc/fortran
parent2f7f9edd28d75a85a33599978f23811e679e443d (diff)
downloadgcc-2d5c4a16dd833aa083f13dd3e78e3ef38afe6ebb.zip
gcc-2d5c4a16dd833aa083f13dd3e78e3ef38afe6ebb.tar.gz
gcc-2d5c4a16dd833aa083f13dd3e78e3ef38afe6ebb.tar.bz2
range-op: Implement floating point division fold_range [PR107569]
Here is the floating point division fold_range implementation, as I wrote in the last mail, we could outline some of the common parts into static methods with descriptive names and share them between foperator_div and foperator_mult. Regressions are +FAIL: gcc.dg/pr95115.c execution test +FAIL: libphobos.phobos/std/math/hardware.d execution test +FAIL: libphobos.phobos_shared/std/math/hardware.d execution test The first test is we have: # RANGE [frange] double [] +-NAN _3 = Inf / Inf; if (_3 ord _3) goto <bb 3>; [INV] else goto <bb 4>; [INV] <bb 3> : abort (); <bb 4> : before evrp, the range is correct, Inf / Inf is known NAN of unknown sign. evrp correctly folds _3 ord _3 into false and the _3 = Inf / Inf; remains in the IL, but then comes dse1 and removes it as dead statement. So, I think yet another example of the PR107608 problems where DCE? removes dead statements which raise floating point exceptions. And -fno-delete-dead-exceptions doesn't help. 2022-11-12 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/107569 * range-op-float.cc (foperator_div): New class. (floating_op_table::floating_op_table): Use foperator_div for RDIV_EXPR.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions