2019-03-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/89664
* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Properly
free the occurance tree after the early out.
* gfortran.dg/pr89664.f90: New testcase.
From-SVN: r269604
+2019-03-12 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/89664
+ * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Properly
+ free the occurance tree after the early out.
+
2019-03-11 Jakub Jelinek <jakub@redhat.com>
PR middle-end/89655
+2019-03-12 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/89664
+ * gfortran.dg/pr89664.f90: New testcase.
+
2019-03-11 Jakub Jelinek <jakub@redhat.com>
PR fortran/89651
--- /dev/null
+! { dg-do compile }
+! { dg-options "-Ofast" }
+
+subroutine s (x)
+ real :: x
+ call sub (x)
+end
+subroutine sub (x)
+ real :: x, y
+ logical :: a, b
+ real :: f1, f2, f3, f4
+ y = f1()
+ a = .false.
+ if ( f2() > f3() ) a = .true.
+ b = .false.
+ if ( f2() > f4() ) b = .true.
+ if ( a ) then
+ x = 1.0
+ else if ( b ) then
+ x = 1.0/y**2
+ else
+ x = 1.0/y - y**2
+ end if
+end
/* If it is more profitable to optimize 1 / x, don't optimize 1 / (x * x). */
if (sqrt_recip_count > square_recip_count)
- return;
+ goto out;
/* Do the expensive part only if we can hope to optimize something. */
if (count + square_recip_count >= threshold && count >= 1)
}
}
+out:
for (occ = occ_head; occ; )
occ = free_bb (occ);