diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-10-08 11:41:00 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-10-08 11:41:00 +0200 |
commit | 9489806fa258b90b02b55804e61e9eb748724ce7 (patch) | |
tree | 87ce8119e0bbeabb45d8b4305f2d32b29041ea87 /gcc/gimple-range.cc | |
parent | 91ae6930ed4a87d7b8e25e10378388b3f0dc1729 (diff) | |
download | gcc-9489806fa258b90b02b55804e61e9eb748724ce7.zip gcc-9489806fa258b90b02b55804e61e9eb748724ce7.tar.gz gcc-9489806fa258b90b02b55804e61e9eb748724ce7.tar.bz2 |
Fix PR97325.
gcc/ChangeLog:
PR tree-optimization/97325
* gimple-range.cc (gimple_ranger::range_of_builtin_call): Handle
negative numbers in __builtin_ffs and __builtin_popcount.
Diffstat (limited to 'gcc/gimple-range.cc')
-rw-r--r-- | gcc/gimple-range.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc index 75c03d6..2461bb7 100644 --- a/gcc/gimple-range.cc +++ b/gcc/gimple-range.cc @@ -620,6 +620,8 @@ gimple_ranger::range_of_builtin_call (irange &r, gcall *call) // If some high bits are known to be zero, decrease the maximum. if (!r.undefined_p ()) { + if (TYPE_SIGN (r.type ()) == SIGNED) + range_cast (r, unsigned_type_for (r.type ())); wide_int max = r.upper_bound (); maxi = wi::floor_log2 (max) + 1; } |