https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93931
Bug ID: 93931 Summary: ICE using lambda capture in openMP parallel for reduction Product: gcc Version: 9.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: Peter.Georg at physik dot uni-regensburg.de Target Milestone: --- Created attachment 47909 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47909&action=edit Source The following (and attached) code fails to compile with any GCC >= 8 when openMP is enabled. GCC compiles the code, but the result is wrong. Any tested clang version compiles the code with no errors and the result is right. #include <iostream> int main() { int score = 0; [&score]() { #pragma omp parallel for reduction(+ : score) for(int i= 0; i < 1000; ++i) { score += i; } }(); std::cout << score << std::endl; return score; } Error: during RTL pass: expand omp.cpp: In lambda function: omp.cpp:6:9: internal compiler error: in make_decl_rtl, at varasm.c:1340 6 | #pragma omp parallel for reduction(+ : score) |