// { dg-do run } // { dg-options "-O2 -w" } // egcs-bugs 1999-02-22 14:24 Stefan Schwarzer // sts@ica1.uni-stuttgart.de // optimizer problem in egcs <= 1.1.1 struct XTVec{ XTVec(){x[0]=x[1] =x[2] =0;} XTVec(int ax,int y=0.,int z=0.){x[0]=ax;x[1]=y; x[2]=z; } int& operator[](int); int x[3]; }; inline int & XTVec::operator[](int i){ return x[i]; } inline XTVec& operator+=(XTVec& lhs, XTVec& rhs){ lhs[0]+=rhs[0]; lhs[1]+=rhs[1]; lhs[2]+=rhs[2]; return lhs; } inline XTVec operator+(XTVec& lhs, XTVec& rhs){ XTVec result(lhs); return result += rhs; } int main() { XTVec ur(4.,0.,1.); XTVec ll(0.,2.,0.); XTVec initsum(ur + ll); // sum of components should be 7 return (initsum[0] + initsum[1] + initsum[2] - 7); }