blob: c39260dc5eab4ff392a641ca53df38e4b4fafdc8 [file] [log] [blame]
// 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;
}