http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60682
Bug ID: 60682 Summary: [4.9 Regression][OpenMP] ICE on an assignment of local variable inside SIMD loop Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: izamyatin at gmail dot com Seems r207629 (fix for PR59984) introduces given issue. Test is class V3 { public: float v[1]; V3() {} V3(const V3 &x) { v[0] = x.v[0]; } }; struct CCC { V3 a[16]; }; void foo(int num, CCC &cc) { #pragma omp simd for(int i = 0; i < num; ++i) { V3 v3; cc.a[i] = v3; } } compilation flags: -O1 -fopenmp ICE: internal compiler error: in create_tmp_var, at gimple-expr.c:506 cc.a[i] = v3; ^ 0x97ab03 create_tmp_var(tree_node*, char const*) Note that v3's privatization makes ICE disappear.