]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[prange] Use type agnostic range in phiopt [PR115191]
authorAldy Hernandez <aldyh@redhat.com>
Wed, 22 May 2024 20:32:57 +0000 (22:32 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Thu, 23 May 2024 06:14:57 +0000 (08:14 +0200)
Fix a use of int_range_max in phiopt that should be a type agnostic
range, because it could be either a pointer or an int.

PR tree-optimization/115191

gcc/ChangeLog:

* tree-ssa-phiopt.cc (value_replacement): Use Value_Range instead
of int_range_max.

gcc/testsuite/ChangeLog:

* gcc.dg/tree-ssa/pr115191.c: New test.

gcc/testsuite/gcc.dg/tree-ssa/pr115191.c [new file with mode: 0644]
gcc/tree-ssa-phiopt.cc

diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr115191.c b/gcc/testsuite/gcc.dg/tree-ssa/pr115191.c
new file mode 100644 (file)
index 0000000..43f780a
--- /dev/null
@@ -0,0 +1,10 @@
+// { dg-do compile }
+// { dg-options "-O1 -w" }
+
+typedef void *SCM;
+void set_socket_io_ports();
+void STk_socket_accept(SCM line_buffered) {
+  if (!line_buffered)
+    line_buffered = (SCM)3;
+  set_socket_io_ports(line_buffered != 1);
+}
index 918cf50b58984db1e0f84a8f27a9053ca9e0a6fb..65f63eb0652e0044efea07a9f5ebe9b8a0536d06 100644 (file)
@@ -1326,12 +1326,11 @@ value_replacement (basic_block cond_bb, basic_block middle_bb,
                    {
                      /* After the optimization PHI result can have value
                         which it couldn't have previously.  */
-                     int_range_max r;
+                     Value_Range r (TREE_TYPE (phires));
                      if (get_global_range_query ()->range_of_expr (r, phires,
                                                                    phi))
                        {
-                         wide_int warg = wi::to_wide (carg);
-                         int_range<2> tmp (TREE_TYPE (carg), warg, warg);
+                         Value_Range tmp (carg, carg);
                          r.union_ (tmp);
                          reset_flow_sensitive_info (phires);
                          set_range_info (phires, r);