[Bug tree-optimization/59374] [4.8/4.9 Regression] -ftree-slp-vectorize breaks unique_ptr's move constructor
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 3 11:40:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59374
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
bar = myalloc (); [return slot optimization]
<bb 3>:
_22 = MEM[(struct Bar * const &)&bar + 8];
MEM[(struct Bar * &)&bar + 8] = 0B;
MEM[(struct Foo * &)&foo + 8] = _22;
_23 = MEM[(const struct BarDelete *)&bar].D.39226.alloc_;
MEM[(struct deleter_type *)&foo] = _23;
_7 = std::operator<< <std::char_traits<char> > (&cout, "p ");
is vectorized to
bar = myalloc (); [return slot optimization]
<bb 3>:
_22 = MEM[(struct Bar * const &)&bar + 8];
MEM[(struct Bar * &)&bar + 8] = 0B;
vectp.87_1 = &MEM[(const struct BarDelete *)&bar].D.39226.alloc_;
vect__23.88_36 = MEM[(const struct BarDelete *)vectp.87_1];
_23 = MEM[(const struct BarDelete *)&bar].D.39226.alloc_;
vectp.90_37 = &foo;
MEM[(struct deleter_type *)vectp.90_37] = vect__23.88_36;
_7 = std::operator<< <std::char_traits<char> > (&cout, "p ");
obvious violating a WAR dependency. I'm sure it was me who broke this.
More information about the Gcc-bugs
mailing list