| // { 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); |
| } |