[gcc r13-2226] Make all default vrange setters set VARYING.

Aldy Hernandez aldyh@gcc.gnu.org
Fri Aug 26 16:14:12 GMT 2022


https://gcc.gnu.org/g:1e2462890ac748a5e5b6a34fdeb61e7027863a90

commit r13-2226-g1e2462890ac748a5e5b6a34fdeb61e7027863a90
Author: Aldy Hernandez <aldyh@redhat.com>
Date:   Fri Aug 26 16:58:58 2022 +0200

    Make all default vrange setters set VARYING.
    
    frange is using some of the default vrange setters, some of which are
    leaving the range in an undefined state.  We hadn't noticed this
    because neither frange nor unsupported_range, both which use some of
    the default implementation, weren't being used much.
    
    We can never go wrong with setting VARYING ;-).
    
    gcc/ChangeLog:
    
            * value-range.cc (vrange::set): Set varying.
            (vrange::set_nonzero): Same.
            (vrange::set_zero): Same.
            (vrange::set_nonnegative): Same.

Diff:
---
 gcc/value-range.cc | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/gcc/value-range.cc b/gcc/value-range.cc
index d056f7356e1..edd10bf5794 100644
--- a/gcc/value-range.cc
+++ b/gcc/value-range.cc
@@ -94,8 +94,9 @@ vrange::singleton_p (tree *) const
 }
 
 void
-vrange::set (tree, tree, value_range_kind)
+vrange::set (tree min, tree, value_range_kind)
 {
+  set_varying (TREE_TYPE (min));
 }
 
 tree
@@ -168,18 +169,21 @@ vrange::nonzero_p () const
 }
 
 void
-vrange::set_nonzero (tree)
+vrange::set_nonzero (tree type)
 {
+  set_varying (type);
 }
 
 void
-vrange::set_zero (tree)
+vrange::set_zero (tree type)
 {
+  set_varying (type);
 }
 
 void
-vrange::set_nonnegative (tree)
+vrange::set_nonnegative (tree type)
 {
+  set_varying (type);
 }
 
 bool


More information about the Gcc-cvs mailing list