On 3/28/23 10:50, Aldy Hernandez wrote:
On 3/28/23 09:54, Jakub Jelinek wrote:
Hi!
On Wed, Mar 22, 2023 at 07:32:44AM +0100, Aldy Hernandez wrote:
* value-range.cc (frange::set): Add nan_state argument.
* value-range.h (class nan_state): New.
(frange::get_nan_state): New.
The following patch makes use of those changes in float_widen_lhs_range.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
LGTM.
Aldy
2023-03-28 Jakub Jelinek <ja...@redhat.com>
* range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
as 4th argument to set to avoid clear_nan and union_ calls.
--- gcc/range-op-float.cc.jj 2023-03-23 15:25:47.119740274 +0100
+++ gcc/range-op-float.cc 2023-03-27 13:28:18.847264635 +0200
@@ -2262,12 +2262,7 @@ float_widen_lhs_range (tree type, const
or real_max_representable (type) as upper bound. */
bool save_flag_finite_math_only = flag_finite_math_only;
flag_finite_math_only = false;
- ret.set (type, lb, ub);
- if (lhs.kind () != VR_VARYING)
- {
- ret.clear_nan ();
- ret.union_ (lhs);
- }
+ ret.set (type, lb, ub, lhs.get_nan_state ());
flag_finite_math_only = save_flag_finite_math_only;
return ret;
I just noticed we're still doing the flag_finite_math_only hack. We
should add some sort of flag to the setter to avoid reducing the range.
I suppose this can wait to the next release.
Aldy