diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2022-10-11 19:20:47 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2022-10-12 08:48:59 +0200 |
commit | 6ce0823721d476cabb2007fecc12c07202325e17 (patch) | |
tree | 741adf98138662f0189da74818e4c9c6a0cfaf3a | |
parent | a901343aa314eb08b362fc6878456d12f96e49b7 (diff) | |
download | gcc-6ce0823721d476cabb2007fecc12c07202325e17.zip gcc-6ce0823721d476cabb2007fecc12c07202325e17.tar.gz gcc-6ce0823721d476cabb2007fecc12c07202325e17.tar.bz2 |
Disable tree to bool conversion in frange::update_nan.
We have a set_nan(type) method which can be confused with
update_nan(bool) because of the silent conversion of pointers to bool.
Currently, if you call update_nan(tree), you'll set the possibility of
NAN with a sign of true if tree is non-null. This is prone to error
and this patch disallows this behavior.
gcc/ChangeLog:
* value-range.cc (frange::set_nonnegative): Pass bool to
update_nan.
* value-range.h: Disallow conversion to bool in update_nan().
-rw-r--r-- | gcc/value-range.cc | 2 | ||||
-rw-r--r-- | gcc/value-range.h | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/gcc/value-range.cc b/gcc/value-range.cc index e07d2aa..26a2b78 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -779,7 +779,7 @@ frange::set_nonnegative (tree type) // Set +NAN as the only possibility. if (HONOR_NANS (type)) - update_nan (/*sign=*/0); + update_nan (/*sign=*/false); } // Here we copy between any two irange's. The ranges can be legacy or diff --git a/gcc/value-range.h b/gcc/value-range.h index 9d630e4..cb5e9d0 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -317,6 +317,7 @@ public: const REAL_VALUE_TYPE &upper_bound () const; void update_nan (); void update_nan (bool sign); + void update_nan (tree) = delete; // Disallow silent conversion to bool. void clear_nan (); // fpclassify like API |