1 // PR rtl-optimization/39607 2 // { dg-do compile } 3 // { dg-options "-O2" } 4 5 void abcErrorMessage(int error); 6 enum AbcSurfType { 7 SURF_U, 8 SURF_V 9 }; 10 class AbcVec2d 11 { 12 public: 13 double x; 14 double y; 15 }; 16 class AbcIval1d 17 { 18 protected: 19 double m_dMin; 20 double m_dMax; 21 public: 22 AbcIval1d(); 23 AbcIval1d(double dMin, double dMax); GetMax()24 double GetMax() const { return m_dMax; } GetMin()25 double GetMin() const { return m_dMin; } 26 }; AbcIval1d(double dMin,double dMax)27inline AbcIval1d::AbcIval1d(double dMin, double dMax) 28 { 29 if (dMin > dMax) { 30 abcErrorMessage(1); 31 } 32 else { 33 m_dMin = dMin; 34 m_dMax = dMax; 35 } 36 } 37 class AbcIval2d 38 { 39 protected: 40 AbcVec2d m_vMin; 41 AbcVec2d m_vMax; 42 public: GetMax()43 AbcVec2d GetMax() const { return m_vMax; } GetMin()44 AbcVec2d GetMin() const { return m_vMin; } 45 }; 46 class AbcCone 47 { 48 protected: 49 int m_uv; 50 public: 51 AbcIval2d GetNaturalUVDomain() const; 52 AbcIval1d GetLinearParamIval(AbcSurfType * pSurfParam) const; 53 }; GetLinearParamIval(AbcSurfType * pSurfParam)54AbcIval1d AbcCone::GetLinearParamIval(AbcSurfType * pSurfParam) const 55 { 56 AbcIval1d sIval; 57 AbcIval2d sUVDomain = GetNaturalUVDomain(); 58 if (m_uv) { 59 sIval = AbcIval1d(sUVDomain.GetMin().x,sUVDomain.GetMax().x); 60 } 61 else { 62 sIval = AbcIval1d(sUVDomain.GetMin().y,sUVDomain.GetMax().y); 63 } 64 return sIval; 65 } 66