mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
3bb4311904
commit
1486c2a780
|
|
@ -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>
|
2017-02-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR target/79633
|
PR target/79633
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "tree-ssa.h"
|
#include "tree-ssa.h"
|
||||||
#include "cfgloop.h"
|
#include "cfgloop.h"
|
||||||
#include "tree-cfg.h"
|
#include "tree-cfg.h"
|
||||||
|
#include "cfganal.h"
|
||||||
#include "intl.h"
|
#include "intl.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -352,6 +353,16 @@ find_implicit_erroneous_behavior (void)
|
||||||
if (has_abnormal_or_eh_outgoing_edge_p (bb))
|
if (has_abnormal_or_eh_outgoing_edge_p (bb))
|
||||||
continue;
|
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
|
/* First look for a PHI which sets a pointer to NULL and which
|
||||||
is then dereferenced within BB. This is somewhat overly
|
is then dereferenced within BB. This is somewhat overly
|
||||||
conservative, but probably catches most of the interesting
|
conservative, but probably catches most of the interesting
|
||||||
|
|
|
||||||
|
|
@ -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>
|
2017-02-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR c++/79655
|
PR c++/79655
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue