re PR tree-optimization/85478 (ICE with single element vector)
Fix PR85478 gcc/ChangeLog: 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com> PR tree-optimization/85478 * tree-vect-loop.c (vect_analyze_loop_2): Do not call vect_grouped_store_supported for single element vectors. gcc/testsuite/ChangeLog: 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com> PR tree-optimization/85478 * g++.dg/pr85478.C: New test. From-SVN: r259593
This commit is contained in:
parent
4149dd37d9
commit
062c0a7b2f
@ -1,3 +1,9 @@
|
||||
2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
PR tree-optimization/85478
|
||||
* tree-vect-loop.c (vect_analyze_loop_2): Do not call
|
||||
vect_grouped_store_supported for single element vectors.
|
||||
|
||||
2018-04-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR target/85491
|
||||
|
@ -1,3 +1,8 @@
|
||||
2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
PR tree-optimization/85478
|
||||
* g++.dg/pr85478.C: New test.
|
||||
|
||||
2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* g++.dg/torture/pr85496.C: New test.
|
||||
|
46
gcc/testsuite/g++.dg/pr85478.C
Normal file
46
gcc/testsuite/g++.dg/pr85478.C
Normal file
@ -0,0 +1,46 @@
|
||||
/* { dg-do compile { target { s390*-*-* } } } */
|
||||
/* { dg-options "-O3 -march=arch12 -std=c++11 -Wno-return-type" } */
|
||||
|
||||
struct a {
|
||||
enum { b };
|
||||
};
|
||||
struct c {
|
||||
template <typename d, typename e> static void f(d g, e h) {
|
||||
d i;
|
||||
for (; i != g; ++h, ++i)
|
||||
*h = *i;
|
||||
}
|
||||
};
|
||||
template <int, typename d, typename e> void j(d g, e h) { c::f(g, h); }
|
||||
template <int k, typename d, typename e> void l(d g, e h) { j<k>(g, h); }
|
||||
template <typename d, typename e> void aa(d g, e h) { l<a::b>(g, h); }
|
||||
template <typename> class ab;
|
||||
template <> struct ab<float> {
|
||||
_Complex m() { return n; }
|
||||
_Complex n;
|
||||
};
|
||||
template <> struct ab<long double> {
|
||||
ab(ab<float> g) : n(g.m()) {}
|
||||
_Complex long double n;
|
||||
};
|
||||
template <int ac, typename o> class p {
|
||||
public:
|
||||
template <typename q> p &operator=(const p<ac, q> &);
|
||||
o *ad;
|
||||
};
|
||||
template <typename o> class r : public p<2, o> {};
|
||||
template <int ac, typename o>
|
||||
template <typename q>
|
||||
p<ac, o> &p<ac, o>::operator=(const p<ac, q> &g) {
|
||||
aa(&g.ad[0], &ad[0]);
|
||||
}
|
||||
template <typename ae> class s : public r<ae> {
|
||||
template <typename t> s &operator=(const s<t> &);
|
||||
};
|
||||
template <typename ae>
|
||||
template <typename t>
|
||||
s<ae> &s<ae>::operator=(const s<t> &g) {
|
||||
p<2, ae>::operator=(g);
|
||||
}
|
||||
template s<ab<long double>> &s<ab<long double>>::
|
||||
operator=(const s<ab<float>> &);
|
@ -2492,6 +2492,7 @@ again:
|
||||
unsigned int size = STMT_VINFO_GROUP_SIZE (vinfo);
|
||||
tree vectype = STMT_VINFO_VECTYPE (vinfo);
|
||||
if (! vect_store_lanes_supported (vectype, size, false)
|
||||
&& ! known_eq (TYPE_VECTOR_SUBPARTS (vectype), 1U)
|
||||
&& ! vect_grouped_store_supported (vectype, size))
|
||||
return false;
|
||||
FOR_EACH_VEC_ELT (SLP_INSTANCE_LOADS (instance), j, node)
|
||||
|
Loading…
Reference in New Issue
Block a user