aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range.cc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-10-08 11:41:00 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-10-08 11:41:00 +0200
commit9489806fa258b90b02b55804e61e9eb748724ce7 (patch)
tree87ce8119e0bbeabb45d8b4305f2d32b29041ea87 /gcc/gimple-range.cc
parent91ae6930ed4a87d7b8e25e10378388b3f0dc1729 (diff)
downloadgcc-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.cc2
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;
}