Not a permanent fix, so leave the PR open.

we'll bypass the comparison assertion code until we can look closer at how to resolve the symbolic issue..  This will keep compilations going...

bootstrapped on x86_64-pc-linux-gnu, no regressions, pushed.

Andrew
commit 292c92715b282f7c6617c94351d3e38ec027d637
Author: Andrew MacLeod <amacl...@redhat.com>
Date:   Tue Oct 20 16:55:14 2020 -0400

    Temporarily disable trap in in extract_range_builtin check.
    
    Until we figure out how to adjust ubsan for symbolics, disable the trap.
    
        gcc/ChangeLog:
    
            PR tree-optimization/97505
            * vr-values.c (vr_values::extract_range_basic): Trap if
            vr_values version disagrees with range_of_builtin_call.

diff --git a/gcc/testsuite/gfortran.dg/pr97505.f90 b/gcc/testsuite/gfortran.dg/pr97505.f90
new file mode 100644
index 00000000000..f0599b38517
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr97505.f90
@@ -0,0 +1,49 @@
+! { dg-do compile }
+! { dg-options "-Os -fsanitize=signed-integer-overflow" }
+!
+! Test the fix for PR35824, in which the interface assignment and
+! negation did not work correctly.
+!
+! Contributed by Rolf Roth <eve...@gmx.net>
+!
+module typemodule
+  type alltype
+     double precision :: a
+     double precision,allocatable :: b(:)
+  end type
+  interface assignment(=)
+    module procedure at_from_at
+  end interface
+  interface operator(-)
+    module procedure  neg_at
+  end interface
+contains
+  subroutine at_from_at(b,a)
+    type(alltype), intent(in) :: a
+    type(alltype), intent(out) :: b
+    b%a=a%a
+    allocate(b%b(2))
+    b%b=a%b
+  end subroutine at_from_at
+  function neg_at(a) result(b)
+    type(alltype), intent(in) :: a
+    type(alltype) :: b
+    b%a=-a%a
+    allocate(b%b(2))
+    b%b=-a%b
+  end function neg_at
+end module
+  use typemodule
+  type(alltype) t1,t2,t3
+  allocate(t1%b(2))
+  t1%a=0.5d0
+  t1%b(1)=1d0
+  t1%b(2)=2d0
+  t2=-t1
+  if (t2%a .ne. -0.5d0) STOP 1
+  if (any(t2%b .ne. [-1d0, -2d0])) STOP 2
+
+  t1=-t1
+  if (t1%a .ne. -0.5d0) STOP 3
+  if (any(t1%b .ne. [-1d0, -2d0])) STOP 4
+end
diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index 11beef82a64..67c88006f13 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -1436,7 +1436,10 @@ vr_values::extract_range_basic (value_range_equiv *vr, gimple *stmt)
       /* Assert that any ranges vr_values::extract_range_builtin gets
 	 are also handled by the ranger counterpart.  */
       gcc_assert (range_of_builtin_call (*this, tmp, as_a<gcall *> (stmt)));
+#if 0
+      /* Disable this while PR97505 is resolved.  */
       gcc_assert (tmp.equal_p (*vr, /*ignore_equivs=*/false));
+#endif
       return;
     }
   /* Handle extraction of the two results (result of arithmetics and

Reply via email to