--- a/cmajor++/Llvm/Llvm.Ir/Type.hpp
+++ b/cmajor++/Llvm/Llvm.Ir/Type.hpp
@@ -41,6 +41,8 @@
     virtual bool IsPointerType() const { return false; }
     virtual bool IsVoidType() const { return false; }
     virtual bool IsFunctionType() const { return false; }
+    virtual bool IsFunctionPointerType() const { return false; }
+    virtual bool IsFunctionPtrPtrType() const { return false; }
     virtual ObjectPtr CreateDefaultValue() const { return ObjectPtr(); }
     virtual ObjectPtr CreateIntegerConstant(int x) { return ObjectPtr(); }
 private:
@@ -197,6 +199,8 @@
     virtual void Dispose();
     TypePtr PointeeType() const { return pointeeType; }
     virtual bool IsPointerType() const { return true; }
+    virtual bool IsFunctionPointerType() const;
+    virtual bool IsFunctionPtrPtrType() const;
     virtual ObjectPtr CreateDefaultValue() const { return Null(Pointer(pointeeType)); }
 private:
     TypePtr pointeeType;