OSDN Git Service

2009-04-03 H.J. Lu <hongjiu.lu@intel.com>
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Apr 2009 22:31:18 +0000 (22:31 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Apr 2009 22:31:18 +0000 (22:31 +0000)
* g++.dg/opt/pr39607.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145523 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/opt/pr39607.C [new file with mode: 0644]

index 9f945cd..792f2e8 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * g++.dg/opt/pr39607.C: New.
+
 2009-04-03  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/39594
 2009-04-03  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/39594
diff --git a/gcc/testsuite/g++.dg/opt/pr39607.C b/gcc/testsuite/g++.dg/opt/pr39607.C
new file mode 100644 (file)
index 0000000..c39260d
--- /dev/null
@@ -0,0 +1,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;
+}