base: Fix for stats node on gcc < 4.6.3
authorAndreas Hansson <andreas.hansson@arm.com>
Mon, 20 Oct 2014 22:03:54 +0000 (18:03 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Mon, 20 Oct 2014 22:03:54 +0000 (18:03 -0400)
This patch adds an explicit function to get the underlying node as gcc
4.6.1 and 4.6.2 have issues otherwise.

src/base/statistics.cc
src/base/statistics.hh

index 5ab837410c8bf09116830a02258dd997e2c248db..b63e69b686b7c01fab5941a0125ccfc1379d07fa 100644 (file)
@@ -379,7 +379,7 @@ Formula::Formula()
 
 Formula::Formula(Temp r)
 {
-    root = r;
+    root = r.getNodePtr();
     setInit();
     assert(size());
 }
@@ -388,7 +388,7 @@ const Formula &
 Formula::operator=(Temp r)
 {
     assert(!root && "Can't change formulas");
-    root = r;
+    root = r.getNodePtr();
     setInit();
     assert(size());
     return *this;
@@ -400,7 +400,7 @@ Formula::operator+=(Temp r)
     if (root)
         root = NodePtr(new BinaryNode<std::plus<Result> >(root, r));
     else {
-        root = r;
+        root = r.getNodePtr();
         setInit();
     }
 
index 658652f05934b9863a5c6ecb9e50a1b5a7c9bba1..a21bf81d17ba21dda0e6ace9150a396f78b0bd09 100644 (file)
@@ -2999,6 +2999,11 @@ class Temp
      */
     operator NodePtr&() { return node; }
 
+    /**
+     * Makde gcc < 4.6.3 happy and explicitly get the underlying node.
+     */
+    NodePtr getNodePtr() const { return node; }
+
   public:
     /**
      * Create a new ScalarStatNode.