diff --git a/arm_compute/graph/Error.h b/arm_compute/graph/Error.h
new file mode 100644
index 0000000..0c8ed26
--- /dev/null
+++ b/arm_compute/graph/Error.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#ifndef __ARM_COMPUTE_GRAPH_ERROR_H__
+#define __ARM_COMPUTE_GRAPH_ERROR_H__
+
+#include "arm_compute/graph/ITensorObject.h"
+
+namespace arm_compute
+{
+namespace graph
+{
+/** Evaluate if a tensor object is null. If the condition is true then an error message is printed and an exception thrown
+ *
+ * @param[in] function       Function in which the error occurred.
+ * @param[in] file           Name of the file where the error occurred.
+ * @param[in] line           Line on which the error occurred.
+ * @param[in] tensor_object  Tensor object to evaluate
+ * @param[in] tensor_objects (Optional) Further allowed tensor objects.
+ */
+template <typename... Ts>
+void error_on_unallocated_tensor_object(const char *function, const char *file, int line,
+                                        const ITensorObject *tensor_object, Ts... tensor_objects)
+{
+    ARM_COMPUTE_UNUSED(function);
+    ARM_COMPUTE_UNUSED(file);
+    ARM_COMPUTE_UNUSED(line);
+    ARM_COMPUTE_UNUSED(tensor_object);
+
+    ARM_COMPUTE_ERROR_ON_LOC(tensor_object == nullptr || tensor_object->tensor() == nullptr, function, file, line);
+
+    const std::array<const ITensorObject *, sizeof...(Ts)> tensor_objects_array{ { std::forward<Ts>(tensor_objects)... } };
+    ARM_COMPUTE_UNUSED(tensor_objects_array);
+
+    ARM_COMPUTE_ERROR_ON_LOC(std::any_of(tensor_objects_array.begin(), tensor_objects_array.end(), [&](const ITensorObject * tensor_obj)
+    {
+        return (tensor_obj == nullptr || tensor_object->tensor() == nullptr);
+    }),
+    function, file, line);
+}
+#define ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(...) ::arm_compute::graph::error_on_unallocated_tensor_object(__func__, __FILE__, __LINE__, __VA_ARGS__)
+} // namespace graph
+} // namespace arm_compute
+#endif /* __ARM_COMPUTE_GRAPH_ERROR_H__ */
diff --git a/arm_compute/graph/ITensorObject.h b/arm_compute/graph/ITensorObject.h
index 61be286..a922dd5 100644
--- a/arm_compute/graph/ITensorObject.h
+++ b/arm_compute/graph/ITensorObject.h
@@ -61,7 +61,8 @@
      *
      * @return Tensor
      */
-    virtual ITensor *tensor() = 0;
+    virtual ITensor       *tensor()       = 0;
+    virtual const ITensor *tensor() const = 0;
     /** Return the target that this tensor is pinned on
      *
      * @return Target of the tensor
diff --git a/arm_compute/graph/SubTensor.h b/arm_compute/graph/SubTensor.h
index 22a0a9e..72aa789 100644
--- a/arm_compute/graph/SubTensor.h
+++ b/arm_compute/graph/SubTensor.h
@@ -72,9 +72,10 @@
     bool                  call_accessor() override;
     bool                  has_accessor() const override;
     arm_compute::ITensor *set_target(TargetHint target) override;
-    arm_compute::ITensor *tensor() override;
-    TargetHint            target() const override;
-    void                  allocate() override;
+    arm_compute::ITensor       *tensor() override;
+    const arm_compute::ITensor *tensor() const override;
+    TargetHint                  target() const override;
+    void                        allocate() override;
 
 private:
     /** Instantiates a sub-tensor */
diff --git a/arm_compute/graph/Tensor.h b/arm_compute/graph/Tensor.h
index 94822c2..e5821dc 100644
--- a/arm_compute/graph/Tensor.h
+++ b/arm_compute/graph/Tensor.h
@@ -107,9 +107,10 @@
     bool                  call_accessor() override;
     bool                  has_accessor() const override;
     arm_compute::ITensor *set_target(TargetHint target) override;
-    arm_compute::ITensor *tensor() override;
-    TargetHint            target() const override;
-    void                  allocate() override;
+    arm_compute::ITensor       *tensor() override;
+    const arm_compute::ITensor *tensor() const override;
+    TargetHint                  target() const override;
+    void                        allocate() override;
 
 private:
     TargetHint                            _target;   /**< Target that this tensor is pinned on */
diff --git a/src/graph/SubTensor.cpp b/src/graph/SubTensor.cpp
index da8de95..2edeb3b 100644
--- a/src/graph/SubTensor.cpp
+++ b/src/graph/SubTensor.cpp
@@ -88,6 +88,11 @@
     return _subtensor.get();
 }
 
+const arm_compute::ITensor *SubTensor::tensor() const
+{
+    return _subtensor.get();
+}
+
 TargetHint SubTensor::target() const
 {
     return _target;
diff --git a/src/graph/Tensor.cpp b/src/graph/Tensor.cpp
index f85fe27..4db79e9 100644
--- a/src/graph/Tensor.cpp
+++ b/src/graph/Tensor.cpp
@@ -95,6 +95,11 @@
     return _tensor.get();
 }
 
+const arm_compute::ITensor *Tensor::tensor() const
+{
+    return _tensor.get();
+}
+
 const TensorInfo &Tensor::info() const
 {
     return _info;
diff --git a/src/graph/nodes/ActivationLayer.cpp b/src/graph/nodes/ActivationLayer.cpp
index d335214..54f30ef 100644
--- a/src/graph/nodes/ActivationLayer.cpp
+++ b/src/graph/nodes/ActivationLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/ActivationLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -36,8 +37,7 @@
 
 std::unique_ptr<arm_compute::IFunction> ActivationLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/BatchNormalizationLayer.cpp b/src/graph/nodes/BatchNormalizationLayer.cpp
index a433f39..1fc83e4 100644
--- a/src/graph/nodes/BatchNormalizationLayer.cpp
+++ b/src/graph/nodes/BatchNormalizationLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/BatchNormalizationLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -31,8 +32,7 @@
 
 std::unique_ptr<arm_compute::IFunction> BatchNormalizationLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/BranchLayer.cpp b/src/graph/nodes/BranchLayer.cpp
index 28f58c6..d062e4b 100644
--- a/src/graph/nodes/BranchLayer.cpp
+++ b/src/graph/nodes/BranchLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/BranchLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/Graph.h"
 #include "arm_compute/graph/SubGraph.h"
 #include "arm_compute/graph/Tensor.h"
@@ -111,8 +112,7 @@
 {
     ARM_COMPUTE_ERROR_ON(_branch_merge_method != BranchMergeMethod::DEPTH_CONCATENATE);
     ARM_COMPUTE_UNUSED(_branch_merge_method);
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     // Create branch function
     auto func = arm_compute::support::cpp14::make_unique<BranchFunction>();
diff --git a/src/graph/nodes/ConvolutionLayer.cpp b/src/graph/nodes/ConvolutionLayer.cpp
index d3ab97f..a7236fc 100644
--- a/src/graph/nodes/ConvolutionLayer.cpp
+++ b/src/graph/nodes/ConvolutionLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/ConvolutionLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/runtime/CL/functions/CLConvolutionLayer.h"
 #include "arm_compute/runtime/CL/functions/CLDirectConvolutionLayer.h"
 #include "arm_compute/runtime/IFunction.h"
@@ -175,8 +176,7 @@
 
 std::unique_ptr<arm_compute::IFunction> ConvolutionLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/DeQuantizationLayer.cpp b/src/graph/nodes/DeQuantizationLayer.cpp
index 3760de6..af9ecee 100644
--- a/src/graph/nodes/DeQuantizationLayer.cpp
+++ b/src/graph/nodes/DeQuantizationLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/DequantizationLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 
@@ -30,8 +31,7 @@
 
 std::unique_ptr<arm_compute::IFunction> DequantizationLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     _target_hint              = ctx.hints().target_hint();
     arm_compute::ITensor *in  = input->tensor();
diff --git a/src/graph/nodes/DepthConvertLayer.cpp b/src/graph/nodes/DepthConvertLayer.cpp
index 62f3082..9b328e7 100644
--- a/src/graph/nodes/DepthConvertLayer.cpp
+++ b/src/graph/nodes/DepthConvertLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/DepthConvertLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 
@@ -35,8 +36,7 @@
 
 std::unique_ptr<arm_compute::IFunction> DepthConvertLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     _target_hint              = ctx.hints().target_hint();
     arm_compute::ITensor *in  = input->tensor();
diff --git a/src/graph/nodes/FlattenLayer.cpp b/src/graph/nodes/FlattenLayer.cpp
index 1e42bd0..66840f6 100644
--- a/src/graph/nodes/FlattenLayer.cpp
+++ b/src/graph/nodes/FlattenLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/FlattenLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -31,8 +32,7 @@
 
 std::unique_ptr<arm_compute::IFunction> FlattenLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     _target_hint              = ctx.hints().target_hint();
     arm_compute::ITensor *in  = input->tensor();
diff --git a/src/graph/nodes/FloorLayer.cpp b/src/graph/nodes/FloorLayer.cpp
index 21c82b8..8750546 100644
--- a/src/graph/nodes/FloorLayer.cpp
+++ b/src/graph/nodes/FloorLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/FloorLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -31,8 +32,7 @@
 
 std::unique_ptr<arm_compute::IFunction> FloorLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/FullyConnectedLayer.cpp b/src/graph/nodes/FullyConnectedLayer.cpp
index 39ed827..41f679b 100644
--- a/src/graph/nodes/FullyConnectedLayer.cpp
+++ b/src/graph/nodes/FullyConnectedLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/FullyConnectedLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -45,8 +46,7 @@
 
 std::unique_ptr<arm_compute::IFunction> FullyConnectedLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/L2NormalizeLayer.cpp b/src/graph/nodes/L2NormalizeLayer.cpp
index bcc3b94..9813ba4 100644
--- a/src/graph/nodes/L2NormalizeLayer.cpp
+++ b/src/graph/nodes/L2NormalizeLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/L2NormalizeLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -36,8 +37,7 @@
 
 std::unique_ptr<arm_compute::IFunction> L2NormalizeLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/NormalizationLayer.cpp b/src/graph/nodes/NormalizationLayer.cpp
index 5036231..a489329 100644
--- a/src/graph/nodes/NormalizationLayer.cpp
+++ b/src/graph/nodes/NormalizationLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/NormalizationLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -36,8 +37,7 @@
 
 std::unique_ptr<arm_compute::IFunction> NormalizationLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/PoolingLayer.cpp b/src/graph/nodes/PoolingLayer.cpp
index 26df585..2c15119 100644
--- a/src/graph/nodes/PoolingLayer.cpp
+++ b/src/graph/nodes/PoolingLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/PoolingLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -36,8 +37,7 @@
 
 std::unique_ptr<arm_compute::IFunction> PoolingLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
diff --git a/src/graph/nodes/QuantizationLayer.cpp b/src/graph/nodes/QuantizationLayer.cpp
index 8e7dadb..c102f47 100644
--- a/src/graph/nodes/QuantizationLayer.cpp
+++ b/src/graph/nodes/QuantizationLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/QuantizationLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 
@@ -30,8 +31,7 @@
 
 std::unique_ptr<arm_compute::IFunction> QuantizationLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     _target_hint              = ctx.hints().target_hint();
     arm_compute::ITensor *in  = input->tensor();
diff --git a/src/graph/nodes/ReshapeLayer.cpp b/src/graph/nodes/ReshapeLayer.cpp
index 3d1a679..4967534 100644
--- a/src/graph/nodes/ReshapeLayer.cpp
+++ b/src/graph/nodes/ReshapeLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/ReshapeLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -36,8 +37,7 @@
 
 std::unique_ptr<arm_compute::IFunction> ReshapeLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     _target_hint              = ctx.hints().target_hint();
     arm_compute::ITensor *in  = input->tensor();
diff --git a/src/graph/nodes/SoftmaxLayer.cpp b/src/graph/nodes/SoftmaxLayer.cpp
index 62057c7..7f2325b 100644
--- a/src/graph/nodes/SoftmaxLayer.cpp
+++ b/src/graph/nodes/SoftmaxLayer.cpp
@@ -23,6 +23,7 @@
  */
 #include "arm_compute/graph/nodes/SoftmaxLayer.h"
 
+#include "arm_compute/graph/Error.h"
 #include "arm_compute/graph/NodeContext.h"
 #include "arm_compute/graph/OperationRegistry.h"
 #include "support/ToolchainSupport.h"
@@ -31,8 +32,7 @@
 
 std::unique_ptr<arm_compute::IFunction> SoftmaxLayer::instantiate_node(GraphContext &ctx, ITensorObject *input, ITensorObject *output)
 {
-    ARM_COMPUTE_ERROR_ON(input == nullptr || input->tensor() == nullptr);
-    ARM_COMPUTE_ERROR_ON(output == nullptr || output->tensor() == nullptr);
+    ARM_COMPUTE_ERROR_ON_UNALLOCATED_TENSOR_OBJECT(input, output);
 
     arm_compute::ITensor *in  = input->tensor();
     arm_compute::ITensor *out = output->tensor();
