Commit d9e1f37f by Richard Biener Committed by Richard Biener

re PR tree-optimization/89664 (ICE in free_bb, at tree-ssa-math-opts.c:522)

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
parent 05073a0d
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
......
! { 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
......@@ -799,7 +799,7 @@ execute_cse_reciprocals_1 (gimple_stmt_iterator *def_gsi, tree def)
/* 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)
......@@ -842,6 +842,7 @@ execute_cse_reciprocals_1 (gimple_stmt_iterator *def_gsi, tree def)
}
}
out:
for (occ = occ_head; occ; )
occ = free_bb (occ);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment