aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-08-31 14:00:16 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-08-31 14:00:16 +0000
commit6974662928334fbca028b2e0fda30721f9fc8afc (patch)
tree5e0a0c373f112bbcce9d10d7ca9acfe3be1705fd /gcc
parent77c028c5229627905a5ae17726868561bdd65da8 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/genmatch.c9
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);