--- /dev/null
+/* { dg-do compile { target { aarch64*-*-* } } } */
+/* { dg-additional-options "-w -O3 -march=armv8.3-a" } */
+
+class a {
+ float b;
+ float c;
+
+public:
+ a(float d, float e) : b(d), c(e) {}
+ a operator+(a d) { return a(b + d.b, c + d.c); }
+ a operator-(a d) { return a(b - d.b, c - d.c); }
+ a operator*(a d) { return a(b * b - c * c, b * c + c * d.b); }
+};
+long f;
+a *g;
+class {
+ a *h;
+ long i;
+ a *j;
+
+public:
+ void k() {
+ a l = h[0], m = g[i], n = l * g[1], o = l * j[8];
+ g[i] = m + n;
+ g[i + 1] = m - n;
+ j[f] = o;
+ }
+} p;
+main() { p.k(); }
{
SLP_TREE_REF_COUNT (value)++;
SLP_TREE_CHILDREN (root)[i] = value;
+ /* ??? We know the original leafs of the replaced nodes will
+ be referenced by bst_map, only the permutes created by
+ pattern matching are not. */
+ if (SLP_TREE_REF_COUNT (node) == 1)
+ load_map->remove (node);
+
vect_free_slp_tree (node);
}
}
{
SLP_TREE_REF_COUNT (value)++;
SLP_TREE_CHILDREN (root)[i] = value;
+ /* ??? We know the original leafs of the replaced nodes will
+ be referenced by bst_map, only the permutes created by
+ pattern matching are not. */
+ if (SLP_TREE_REF_COUNT (node) == 1)
+ load_map->remove (node);
+
vect_free_slp_tree (node);
}
}