]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/50763 (ICE: verify_gimple failed: missing PHI def with -ftree...
authorTom de Vries <tom@codesourcery.com>
Wed, 2 Nov 2011 18:01:18 +0000 (18:01 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Wed, 2 Nov 2011 18:01:18 +0000 (18:01 +0000)
2011-11-02  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/50763
* g++.dg/pr50763-3.C: New test.

From-SVN: r180785

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr50763-3.C [new file with mode: 0644]

index cbb10dab60468e394719c75a743cc743424e9364..057fd7c5973855b6fcd7ca89df9360fbc32a2b5a 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-02  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/50763
+       * g++.dg/pr50763-3.C: New test.
+
 2011-11-02  Tom de Vries  <tom@codesourcery.com>
 
        PR tree-optimization/50672
diff --git a/gcc/testsuite/g++.dg/pr50763-3.C b/gcc/testsuite/g++.dg/pr50763-3.C
new file mode 100644 (file)
index 0000000..b66be87
--- /dev/null
@@ -0,0 +1,57 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O2 -ftree-tail-merge" } */
+
+class v2d {
+public:
+   double x;
+   double y;
+};
+
+class v3d {
+public:
+   double x;
+   v3d() {}
+   v3d(const v2d & cr2Dv) {}
+};
+
+class e2d {
+protected:
+   v2d _Min;
+   v2d _Max;
+public:
+   int cop2d(const v2d & rPnt) const;
+   v2d clp2d(const v2d & rPnt) const;
+};
+
+inline int e2d::cop2d(const v2d & rPnt) const {
+   int bRet = 1;
+   if (rPnt.x < _Min.x) bRet = 0;
+   else if (rPnt.x > _Max.x) bRet = 0;
+   else if (rPnt.y > _Max.y) bRet = 0;
+   return bRet;
+}
+
+inline v2d e2d::clp2d(const v2d & rPnt) const {
+   v2d sRet = rPnt;
+   if (rPnt.x < _Min.x) sRet.x = _Min.x;
+   if (rPnt.y < _Min.y) sRet.y = _Min.y;
+   if (rPnt.x > _Max.x) sRet.x = _Max.x;
+   if (rPnt.y > _Max.y) sRet.y = _Max.y;
+   return sRet;
+}
+
+class sExt {
+protected:
+   e2d _Dom;
+   long eval() const;
+   long evalPoint(const v2d & crUV, v3d & rPnt) const;
+};
+
+long sExt::evalPoint(const v2d & crUV, v3d & rPnt) const {
+   v3d sUV = crUV;
+   if (!_Dom.cop2d(crUV)) {
+      sUV = _Dom.clp2d(crUV);
+   }
+   eval();
+}