PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / opt / pr39607.C
blobc39260dc5eab4ff392a641ca53df38e4b4fafdc8
1 // PR rtl-optimization/39607
2 // { dg-do compile }
3 // { dg-options "-O2" }
5 void abcErrorMessage(int error);
6 enum AbcSurfType {
7     SURF_U,
8     SURF_V
9 };
10 class AbcVec2d
12 public:
13     double x;
14     double y;
16 class AbcIval1d
18 protected:
19     double m_dMin;
20     double m_dMax;
21 public:
22     AbcIval1d();
23     AbcIval1d(double dMin, double dMax);
24     double GetMax() const { return m_dMax; }
25     double GetMin() const { return m_dMin; }
27 inline AbcIval1d::AbcIval1d(double dMin, double dMax)
29     if (dMin > dMax) {
30         abcErrorMessage(1);
31     }
32     else {
33         m_dMin = dMin;
34         m_dMax = dMax;
35     }
37 class AbcIval2d
39 protected:
40     AbcVec2d m_vMin;
41     AbcVec2d m_vMax;
42 public:
43     AbcVec2d GetMax() const { return m_vMax; }
44     AbcVec2d GetMin() const { return m_vMin; }
46 class AbcCone
48 protected:
49     int m_uv;           
50 public:
51     AbcIval2d GetNaturalUVDomain() const;
52     AbcIval1d GetLinearParamIval(AbcSurfType * pSurfParam) const;
54 AbcIval1d AbcCone::GetLinearParamIval(AbcSurfType * pSurfParam) const
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;