aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/opt/pr39607.C
blob: c39260dc5eab4ff392a641ca53df38e4b4fafdc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// 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;
}