re PR tree-optimization/79621 (Missed path isolation opportunity)

PR tree-optimization/79621
	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
	blocks with edges to themselves.

	PR tree-optimization/79621
	* gcc.c-torture/compile/pr79621.c: New test.

From-SVN: r245637
This commit is contained in:
Jeff Law 2017-02-21 10:58:00 -07:00 committed by Jeff Law
parent 3bb4311904
commit 1486c2a780
4 changed files with 40 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2017-02-21 Jeff Law <law@redhat.com>
PR tree-optimization/79621
* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
blocks with edges to themselves.
2017-02-21 Jakub Jelinek <jakub@redhat.com>
PR target/79633

View File

@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-ssa.h"
#include "cfgloop.h"
#include "tree-cfg.h"
#include "cfganal.h"
#include "intl.h"
@ -352,6 +353,16 @@ find_implicit_erroneous_behavior (void)
if (has_abnormal_or_eh_outgoing_edge_p (bb))
continue;
/* If BB has an edge to itself, then duplication of BB below
could result in reallocation of BB's PHI nodes. If that happens
then the loop below over the PHIs would use the old PHI and
thus invalid information. We don't have a good way to know
if a PHI has been reallocated, so just avoid isolation in
this case. */
if (find_edge (bb, bb))
continue;
/* First look for a PHI which sets a pointer to NULL and which
is then dereferenced within BB. This is somewhat overly
conservative, but probably catches most of the interesting

View File

@ -1,3 +1,8 @@
2017-02-21 Jeff Law <law@redhat.com>
PR tree-optimization/79621
* gcc.c-torture/compile/pr79621.c: New test.
2017-02-21 Jakub Jelinek <jakub@redhat.com>
PR c++/79655

View File

@ -0,0 +1,18 @@
int b5;
void
h6 (int zb, int e7)
{
while (b5 > 0)
{
int gv;
for (gv = 1; gv < 4; ++gv)
{
((zb != 0) ? b5 : gv) && (b5 /= e7);
zb = 0;
}
e7 = 0;
}
}