https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91526
--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #9) > here is an example where the C++ front-end produces IR which causes the > opposite effect and the C front-end is better: > struct Vec { float v[8]; }; > > struct Vec multiply(const struct Vec* v1, const struct Vec* v2) > { > struct Vec result; > struct Vec result1, result2; > for(unsigned i = 0; i < 8; ++i) > result.v[i] = v1->v[i] * v2->v[i]; > result1 = result; > result2 = result; > return result2; > } as for this one, basically in the end it is the same. Though it shows up with both the C and C++ front-ends (after the simple copy prop happens).