diff --git a/src/dynamic_fusion/sketch/gpu/operators/GpuConv2d.cpp b/src/dynamic_fusion/sketch/gpu/operators/GpuConv2d.cpp
index e00f095..d29d848 100644
--- a/src/dynamic_fusion/sketch/gpu/operators/GpuConv2d.cpp
+++ b/src/dynamic_fusion/sketch/gpu/operators/GpuConv2d.cpp
@@ -204,12 +204,13 @@
 
     const auto sketch_ctx = sketch.implementation().context();
 
-    const auto gpu_target  = sketch_ctx->gpu_target();
+    const auto gpu_target = sketch_ctx->gpu_target();
 
     if(sketch_ctx->gpu_language() == GpuLanguage::OpenCL)
     {
         const auto cl_compile_ctx = sketch_ctx->cl_compile_context();
         ARM_COMPUTE_ERROR_ON(cl_compile_ctx == nullptr);
+        ARM_COMPUTE_UNUSED(cl_compile_ctx);
 
         // Add Direct Conv2d Component
         {
diff --git a/src/dynamic_fusion/sketch/gpu/operators/GpuPool2d.cpp b/src/dynamic_fusion/sketch/gpu/operators/GpuPool2d.cpp
index c602f45..e464be8 100644
--- a/src/dynamic_fusion/sketch/gpu/operators/GpuPool2d.cpp
+++ b/src/dynamic_fusion/sketch/gpu/operators/GpuPool2d.cpp
@@ -169,6 +169,7 @@
     if(sketch_ctx->gpu_language() == GpuLanguage::OpenCL)
     {
         const auto cl_compile_ctx = sketch_ctx->cl_compile_context();
+        ARM_COMPUTE_UNUSED(cl_compile_ctx);
         ARM_COMPUTE_ERROR_ON(cl_compile_ctx == nullptr);
 
         // Add Component
diff --git a/src/dynamic_fusion/sketch/gpu/operators/GpuReshape.cpp b/src/dynamic_fusion/sketch/gpu/operators/GpuReshape.cpp
index f5645f3..0f43a57 100644
--- a/src/dynamic_fusion/sketch/gpu/operators/GpuReshape.cpp
+++ b/src/dynamic_fusion/sketch/gpu/operators/GpuReshape.cpp
@@ -130,6 +130,7 @@
     if(sketch_ctx->gpu_language() == GpuLanguage::OpenCL)
     {
         const auto cl_compile_ctx = sketch_ctx->cl_compile_context();
+        ARM_COMPUTE_UNUSED(cl_compile_ctx);
         ARM_COMPUTE_ERROR_ON(cl_compile_ctx == nullptr);
 
         // Add ElementwiseBinary Component
diff --git a/src/dynamic_fusion/sketch/gpu/operators/GpuSoftmax.cpp b/src/dynamic_fusion/sketch/gpu/operators/GpuSoftmax.cpp
index db74538..291a1e5 100644
--- a/src/dynamic_fusion/sketch/gpu/operators/GpuSoftmax.cpp
+++ b/src/dynamic_fusion/sketch/gpu/operators/GpuSoftmax.cpp
@@ -154,6 +154,7 @@
     if(sketch_ctx->gpu_language() == GpuLanguage::OpenCL)
     {
         const auto cl_compile_ctx = sketch_ctx->cl_compile_context();
+        ARM_COMPUTE_UNUSED(cl_compile_ctx);
         ARM_COMPUTE_ERROR_ON(cl_compile_ctx == nullptr);
 
         // Add Direct Conv2d Component
diff --git a/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplatePool2d.cpp b/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplatePool2d.cpp
index bbff8ba..fb86e16 100644
--- a/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplatePool2d.cpp
+++ b/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplatePool2d.cpp
@@ -40,11 +40,10 @@
 namespace
 {
 // Shape indexes for NHWC Datalayout
-constexpr static int32_t batch_idx   = 3;
 constexpr static int32_t height_idx  = 2;
 constexpr static int32_t width_idx   = 1;
 constexpr static int32_t channel_idx = 0;
-}
+} // namespace
 ClTemplatePool2d::ClTemplatePool2d(ComponentId                      id,
                                    const ArgumentPack<ITensorInfo> &tensors,
                                    const Attributes                &attributes,
@@ -390,12 +389,12 @@
     lut["meta_kernel_id"] = id();
 
     // Retrieve relevant data
-    const auto  padding                 = _attributes.pad();
-    const auto  stride                  = _attributes.stride();
-    const auto  pool_size               = _attributes.pool_size();
-    const auto  data_type               = _src->data_type();
-    const auto  use_fp_mixed_precision  = (_src->data_type() == DataType::F16) && _settings.mixed_precision() && _attributes.pool_type() != PoolingType::MAX;
-    const std::string max_initial_value = _settings.use_inf_as_limit() ? "(-INFINITY)" : float_to_string_with_full_precision(std::numeric_limits<float>::lowest());
+    const auto        padding                = _attributes.pad();
+    const auto        stride                 = _attributes.stride();
+    const auto        pool_size              = _attributes.pool_size();
+    const auto        data_type              = _src->data_type();
+    const auto        use_fp_mixed_precision = (_src->data_type() == DataType::F16) && _settings.mixed_precision() && _attributes.pool_type() != PoolingType::MAX;
+    const std::string max_initial_value      = _settings.use_inf_as_limit() ? "(-INFINITY)" : float_to_string_with_full_precision(std::numeric_limits<float>::lowest());
 
     // pool specific
     lut["STRIDE_X"]    = stride.x();
