diff options
author | Richard Biener <rguenther@suse.de> | 2015-08-31 14:00:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-08-31 14:00:16 +0000 |
commit | 6974662928334fbca028b2e0fda30721f9fc8afc (patch) | |
tree | 5e0a0c373f112bbcce9d10d7ca9acfe3be1705fd /gcc | |
parent | 77c028c5229627905a5ae17726868561bdd65da8 (diff) | |
download | gcc-6974662928334fbca028b2e0fda30721f9fc8afc.zip gcc-6974662928334fbca028b2e0fda30721f9fc8afc.tar.gz gcc-6974662928334fbca028b2e0fda30721f9fc8afc.tar.bz2 |
re PR tree-optimization/67381 (genmatch does not honor the order of patterns)
2015-08-31 Richard Biener <rguenther@suse.de>
PR middle-end/67381
* genmatch.c (dt_node::gen_kids): Also treat matches as barrier.
From-SVN: r227344
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/genmatch.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0e97a19..adc85fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-08-31 Richard Biener <rguenther@suse.de> + + PR middle-end/67381 + * genmatch.c (dt_node::gen_kids): Also treat matches as barrier. + 2015-08-31 Marc Glisse <marc.glisse@inria.fr> * match.pd (SIN, COS, TAN, COSH): Reorder for consistency. diff --git a/gcc/genmatch.c b/gcc/genmatch.c index d92d808..7266637 100644 --- a/gcc/genmatch.c +++ b/gcc/genmatch.c @@ -2529,12 +2529,15 @@ dt_node::gen_kids (FILE *f, int indent, bool gimple) else gcc_unreachable (); } - else if (kids[i]->type == dt_node::DT_MATCH - || kids[i]->type == dt_node::DT_SIMPLIFY) + else if (kids[i]->type == dt_node::DT_SIMPLIFY) others.safe_push (kids[i]); - else if (kids[i]->type == dt_node::DT_TRUE) + else if (kids[i]->type == dt_node::DT_MATCH + || kids[i]->type == dt_node::DT_TRUE) { /* A DT_TRUE operand serves as a barrier - generate code now + for what we have collected sofar. + Like DT_TRUE, DT_MATCH serves as a barrier as it can cause + dependent matches to get out-of-order. Generate code now for what we have collected sofar. */ gen_kids_1 (f, indent, gimple, gimple_exprs, generic_exprs, fns, generic_fns, preds, others); |