This patch adds an explicit function to get the underlying node as gcc
4.6.1 and 4.6.2 have issues otherwise.
 
 Formula::Formula(Temp r)
 {
-    root = r;
+    root = r.getNodePtr();
     setInit();
     assert(size());
 }
 Formula::operator=(Temp r)
 {
     assert(!root && "Can't change formulas");
-    root = r;
+    root = r.getNodePtr();
     setInit();
     assert(size());
     return *this;
     if (root)
         root = NodePtr(new BinaryNode<std::plus<Result> >(root, r));
     else {
-        root = r;
+        root = r.getNodePtr();
         setInit();
     }
 
 
      */
     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.