diff --git a/compiler/record-hessian/src/HessianComputer.cpp b/compiler/record-hessian/src/HessianComputer.cpp
index 6ae36cf0797..097f99bdbd1 100644
--- a/compiler/record-hessian/src/HessianComputer.cpp
+++ b/compiler/record-hessian/src/HessianComputer.cpp
@@ -37,24 +37,24 @@ void unfold(std::vector<float> &buf, uint32_t input_n, uint32_t input_h, uint32_
 
   if (input_c != kernel_ic)
     throw std::runtime_error("RecordHessian: Input channels do not match kernel channels.");
-  int out_height = (input_h - dilation_h * (kernel_h - 1) - 1) / stride_h + 1;
-  int out_width = (input_w - dilation_w * (kernel_w - 1) - 1) / stride_w + 1;
-  int patch_size = kernel_h * kernel_w * kernel_ic;
+  uint32_t out_height = (input_h - dilation_h * (kernel_h - 1) - 1) / stride_h + 1;
+  uint32_t out_width = (input_w - dilation_w * (kernel_w - 1) - 1) / stride_w + 1;
+  uint32_t patch_size = kernel_h * kernel_w * kernel_ic;
   std::vector<float> unfolded_buf(input_n * out_height * out_width * patch_size, 0.0f);
 
-  int index = 0;
-  int in_y, in_x;
-  for (int n = 0; n < input_n; ++n)
+  uint32_t index = 0;
+  uint32_t in_y, in_x;
+  for (uint32_t n = 0; n < input_n; ++n)
   {
-    for (int y = 0; y < out_height; ++y)
+    for (uint32_t y = 0; y < out_height; ++y)
     {
-      for (int x = 0; x < out_width; ++x)
+      for (uint32_t x = 0; x < out_width; ++x)
       {
-        for (int in_c = 0; in_c < input_c; ++in_c)
+        for (uint32_t in_c = 0; in_c < input_c; ++in_c)
         {
-          for (int ky = 0; ky < kernel_h; ++ky)
+          for (uint32_t ky = 0; ky < kernel_h; ++ky)
           {
-            for (int kx = 0; kx < kernel_w; ++kx)
+            for (uint32_t kx = 0; kx < kernel_w; ++kx)
             {
               in_y = y * stride_h + ky * dilation_h;
               in_x = x * stride_w + kx * dilation_w;
@@ -102,12 +102,12 @@ void HessianComputer::recordHessianForFullyConnected(const luci::CircleNode *nod
 
   std::vector<float> hessian(size_in_ch * size_in_ch, 0);
 
-  for (int i = 0; i < size_in_ch; ++i)
+  for (uint32_t i = 0; i < size_in_ch; ++i)
   {
-    for (int j = 0; j < size_in_ch; ++j)
+    for (uint32_t j = 0; j < size_in_ch; ++j)
     {
       float sum = 0;
-      for (int k = 0; k < length; ++k)
+      for (uint32_t k = 0; k < length; ++k)
       {
         sum += buf[i + k * size_in_ch] * buf[j + k * size_in_ch];
       }
@@ -130,7 +130,6 @@ void HessianComputer::recordHessianForConv2D(const luci::CircleNode *node)
   assert(node_filter->dtype() == loco::DataType::FLOAT32);
   assert(node_filter->rank() == 4);
 
-  uint32_t size_filter = node_filter->size<loco::DataType::FLOAT32>();
   uint32_t size_in_ch =
     node_filter->size<loco::DataType::FLOAT32>() / circle_conv2d->dim(3).value();
 
@@ -161,12 +160,12 @@ void HessianComputer::recordHessianForConv2D(const luci::CircleNode *node)
   uint32_t length = buf.size() / size_in_ch;
 
   std::vector<float> hessian(size_in_ch * size_in_ch, 0);
-  for (int i = 0; i < size_in_ch; ++i)
+  for (uint32_t i = 0; i < size_in_ch; ++i)
   {
-    for (int j = 0; j < size_in_ch; ++j)
+    for (uint32_t j = 0; j < size_in_ch; ++j)
     {
       float sum = 0;
-      for (int k = 0; k < length; ++k)
+      for (uint32_t k = 0; k < length; ++k)
       {
         sum += buf[i + k * size_in_ch] * buf[j + k * size_in_ch];
       }