https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96354
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW --- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> --- Reduced test-case: cat /tmp/RMSD.ii template <int _Nm> struct __array_traits { typedef double _Type[_Nm]; }; template <int _Nm> struct array { typename __array_traits<_Nm>::_Type _M_elems; double *data() { return _M_elems; } }; template <unsigned n> class VectorGeneric { array<n> d; public: VectorGeneric(); }; template <unsigned n> VectorGeneric<n>::VectorGeneric() { double __trans_tmp_3 = *d.data(); } template <unsigned n> void operator-(VectorGeneric<n>, const VectorGeneric<n> &); template <unsigned> class TensorGeneric {}; template <unsigned n, unsigned m> VectorGeneric<n> matmul(TensorGeneric<n>, VectorGeneric<m>) { VectorGeneric<n> t; return t; } int doCoreCalc_n; class RMSDCoreData { TensorGeneric<3> rotation; void doCoreCalc(); }; void RMSDCoreData::doCoreCalc() { for (unsigned iat;;) #pragma omp simd for (iat = 0; iat < doCoreCalc_n; iat++) { VectorGeneric<3> __trans_tmp_2, __trans_tmp_4; __trans_tmp_4 - matmul(rotation, __trans_tmp_2); } } @Jakub: Can you please take a look?