public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-4380] Return TRUE only when a global value is updated.
@ 2023-10-03 14:31 Andrew Macleod
0 siblings, 0 replies; only message in thread
From: Andrew Macleod @ 2023-10-03 14:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:ec8e86690ee572f03e6ffda288f2d28fd86f9d65
commit r14-4380-gec8e86690ee572f03e6ffda288f2d28fd86f9d65
Author: Andrew MacLeod <amacleod@redhat.com>
Date: Wed Sep 27 12:34:16 2023 -0400
Return TRUE only when a global value is updated.
set_range_info should return TRUE only when it sets a new value. VRP no
longer overwrites global ranges DOM has set. Check for ranges in the
final listing.
gcc/
* tree-ssanames.cc (set_range_info): Return true only if the
current value changes.
gcc/testsuite/
* gcc.dg/pr93917.c: Check for ranges in final optimized listing.
* gcc.dg/tree-ssa/vrp-unreachable.c: Ditto.
Diff:
---
gcc/testsuite/gcc.dg/pr93917.c | 4 ++--
gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c | 4 ++--
gcc/tree-ssanames.cc | 24 ++++++++++++------------
3 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/gcc/testsuite/gcc.dg/pr93917.c b/gcc/testsuite/gcc.dg/pr93917.c
index f09e1c41ae8..f636b77f45d 100644
--- a/gcc/testsuite/gcc.dg/pr93917.c
+++ b/gcc/testsuite/gcc.dg/pr93917.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-vrp2" } */
+/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-vrp2 -fdump-tree-optimized-alias" } */
void f3(int n);
@@ -19,5 +19,5 @@ void f2(int*n)
/* { dg-final { scan-tree-dump-times "Global Export.*0, \\+INF" 1 "vrp1" } } */
/* { dg-final { scan-tree-dump-times "__builtin_unreachable" 1 "vrp1" } } */
-/* { dg-final { scan-tree-dump-times "Global Export.*0, \\+INF" 1 "vrp2" } } */
/* { dg-final { scan-tree-dump-times "__builtin_unreachable" 0 "vrp2" } } */
+/* { dg-final { scan-tree-dump-times "0, \\+INF" 2 "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c
index 5835dfc8dbc..4aad7f1be5d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-vrp1-alias -fdump-tree-vrp2-alias" } */
+/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-vrp2 -fdump-tree-optimized-alias" } */
void dead (unsigned n);
void alive (unsigned n);
@@ -39,4 +39,4 @@ void func (unsigned n, unsigned m)
/* { dg-final { scan-tree-dump-not "dead" "vrp1" } } */
/* { dg-final { scan-tree-dump-times "builtin_unreachable" 1 "vrp1" } } */
/* { dg-final { scan-tree-dump-not "builtin_unreachable" "vrp2" } } */
-/* { dg-final { scan-tree-dump-times "fff8 VALUE 0x0" 4 "vrp2" } } */
+/* { dg-final { scan-tree-dump-times "fff8 VALUE 0x0" 2 "optimized" } } */
diff --git a/gcc/tree-ssanames.cc b/gcc/tree-ssanames.cc
index 23387b90fe3..1eae411ac1c 100644
--- a/gcc/tree-ssanames.cc
+++ b/gcc/tree-ssanames.cc
@@ -418,10 +418,17 @@ set_range_info (tree name, const vrange &r)
if (r.undefined_p () || r.varying_p ())
return false;
+ // Pick up the current range, or VARYING if none.
tree type = TREE_TYPE (name);
+ Value_Range tmp (type);
+ if (range_info_p (name))
+ range_info_get_range (name, tmp);
+ else
+ tmp.set_varying (type);
+
if (POINTER_TYPE_P (type))
{
- if (r.nonzero_p ())
+ if (r.nonzero_p () && !tmp.nonzero_p ())
{
set_ptr_nonnull (name);
return true;
@@ -429,18 +436,11 @@ set_range_info (tree name, const vrange &r)
return false;
}
- /* If a global range already exists, incorporate it. */
- if (range_info_p (name))
- {
- Value_Range tmp (type);
- range_info_get_range (name, tmp);
- tmp.intersect (r);
- if (tmp.undefined_p ())
- return false;
+ // If the result doesn't change, or is undefined, return false.
+ if (!tmp.intersect (r) || tmp.undefined_p ())
+ return false;
- return range_info_set_range (name, tmp);
- }
- return range_info_set_range (name, r);
+ return range_info_set_range (name, tmp);
}
/* Set nonnull attribute to pointer NAME. */
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-10-03 14:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-03 14:31 [gcc r14-4380] Return TRUE only when a global value is updated Andrew Macleod
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).