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();

}

Reply via email to