| // PR rtl-optimization/39607 |
| // { dg-do compile } |
| // { dg-options "-O2" } |
| |
| void abcErrorMessage(int error); |
| enum AbcSurfType { |
| SURF_U, |
| SURF_V |
| }; |
| class AbcVec2d |
| { |
| public: |
| double x; |
| double y; |
| }; |
| class AbcIval1d |
| { |
| protected: |
| double m_dMin; |
| double m_dMax; |
| public: |
| AbcIval1d(); |
| AbcIval1d(double dMin, double dMax); |
| double GetMax() const { return m_dMax; } |
| double GetMin() const { return m_dMin; } |
| }; |
| inline AbcIval1d::AbcIval1d(double dMin, double dMax) |
| { |
| if (dMin > dMax) { |
| abcErrorMessage(1); |
| } |
| else { |
| m_dMin = dMin; |
| m_dMax = dMax; |
| } |
| } |
| class AbcIval2d |
| { |
| protected: |
| AbcVec2d m_vMin; |
| AbcVec2d m_vMax; |
| public: |
| AbcVec2d GetMax() const { return m_vMax; } |
| AbcVec2d GetMin() const { return m_vMin; } |
| }; |
| class AbcCone |
| { |
| protected: |
| int m_uv; |
| public: |
| AbcIval2d GetNaturalUVDomain() const; |
| AbcIval1d GetLinearParamIval(AbcSurfType * pSurfParam) const; |
| }; |
| AbcIval1d AbcCone::GetLinearParamIval(AbcSurfType * pSurfParam) const |
| { |
| AbcIval1d sIval; |
| AbcIval2d sUVDomain = GetNaturalUVDomain(); |
| if (m_uv) { |
| sIval = AbcIval1d(sUVDomain.GetMin().x,sUVDomain.GetMax().x); |
| } |
| else { |
| sIval = AbcIval1d(sUVDomain.GetMin().y,sUVDomain.GetMax().y); |
| } |
| return sIval; |
| } |