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: [email protected]
ReportedBy: [email protected]
// 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();
}