aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-cache.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2023-10-09 10:15:07 -0400
committerAndrew MacLeod <amacleod@redhat.com>2023-10-09 12:15:17 -0400
commitb0892b1fc637fadf14d7016858983bc5776a1e69 (patch)
tree521c05bbad3d113c397dd710a2f8ea5fd4124123 /gcc/gimple-range-cache.cc
parent5ee51119d1345f3f13af784455a4ae466766912b (diff)
downloadgcc-b0892b1fc637fadf14d7016858983bc5776a1e69.zip
gcc-b0892b1fc637fadf14d7016858983bc5776a1e69.tar.gz
gcc-b0892b1fc637fadf14d7016858983bc5776a1e69.tar.bz2
Ensure float equivalences include + and - zero.
A floating point equivalence may not properly reflect both signs of zero, so be pessimsitic and ensure both signs are included. PR tree-optimization/111694 gcc/ * gimple-range-cache.cc (ranger_cache::fill_block_cache): Adjust equivalence range. * value-relation.cc (adjust_equivalence_range): New. * value-relation.h (adjust_equivalence_range): New prototype. gcc/testsuite/ * gcc.dg/pr111694.c: New.
Diffstat (limited to 'gcc/gimple-range-cache.cc')
-rw-r--r--gcc/gimple-range-cache.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc
index 3c81993..89c0845 100644
--- a/gcc/gimple-range-cache.cc
+++ b/gcc/gimple-range-cache.cc
@@ -1470,6 +1470,9 @@ ranger_cache::fill_block_cache (tree name, basic_block bb, basic_block def_bb)
{
if (rel != VREL_EQ)
range_cast (equiv_range, type);
+ else
+ adjust_equivalence_range (equiv_range);
+
if (block_result.intersect (equiv_range))
{
if (DEBUG_RANGE_CACHE)