http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56217
Bug #: 56217 Summary: ICE: OpenMP: when combining shared() and a move constructor Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: blocker Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: radf...@blackbean.org // ICE with shared(std::unique_ptr<> or equiv) when using: -fopenmp -std=c++11 -O1 template <typename T> struct ptr { T *p; ptr() : p() {} ptr(ptr &) = delete; ptr(ptr &&o) : p(o) {} operator T *() { return p; } }; static ptr<int> f() { ptr<int> pt; #pragma omp task shared(pt) pt.p = 0; return pt; } int main(int c, char **v) { #pragma omp parallel #pragma omp single f(); }