diff --git a/compute/pzgemm.c b/compute/pzgemm.c
index dee1fc2fc8ae80f6dcc294ef37d4fc6c90dda5c7..a863579d66797362f774743317f1418e72c28da1 100644
--- a/compute/pzgemm.c
+++ b/compute/pzgemm.c
@@ -45,14 +45,12 @@ chameleon_pzgemm_Astat( CHAM_context_t *chamctxt, cham_trans_t transA, cham_tran
     RUNTIME_sequence_t *sequence = options->sequence;
     int                 m, n, k;
     int                 tempmm, tempnn, tempkn, tempkm;
-    int                 myrank = RUNTIME_comm_rank( chamctxt );
-    int                 reduceC[ C->mt * C->nt ];
+    int                 myrank  = RUNTIME_comm_rank( chamctxt );
+    int8_t             *reduceC = calloc( C->mt * C->nt, sizeof(int8_t) );
 
     /* Set C tiles to redux mode. */
     for (n = 0; n < C->nt; n++) {
         for (m = 0; m < C->mt; m++) {
-            reduceC[ n * C->mt + m ] = 0;
-
             /* The node owns the C tile. */
             if ( C->get_rankof( C(m, n) ) == myrank ) {
                 reduceC[ n * C->mt + m ] = 1;
@@ -169,6 +167,7 @@ chameleon_pzgemm_Astat( CHAM_context_t *chamctxt, cham_trans_t transA, cham_tran
         }
     }
     options->forcesub = 0;
+    free( reduceC );
 
     (void)chamctxt;
 }
diff --git a/compute/pzhemm.c b/compute/pzhemm.c
index 56b2c7267e4eb6279c36c9147eabb9b5fec80b9a..4cbe3deaf1e9311fc8cd1fd7356379aa69c7267a 100644
--- a/compute/pzhemm.c
+++ b/compute/pzhemm.c
@@ -48,13 +48,11 @@ chameleon_pzhemm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
     int                 k, m, n, l, Am, An;
     int                 tempmm, tempnn, tempkn, tempkm;
     int                 myrank = RUNTIME_comm_rank( chamctxt );
-    int                 reduceC[ C->mt * C->nt ];
+    int8_t             *reduceC = calloc( C->mt * C->nt, sizeof(int8_t) );
 
     /* Set C tiles to redux mode */
     for (n = 0; n < C->nt; n++) {
         for (m = 0; m < C->mt; m++) {
-            reduceC[ n * C->mt + m ] = 0;
-
             /* The node owns the C tile. */
             if ( C->get_rankof( C(m, n) ) == myrank ) {
                 reduceC[ n * C->mt + m ] = 1;
@@ -278,6 +276,8 @@ chameleon_pzhemm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
         }
     }
     options->forcesub = 0;
+    free( reduceC );
+
     (void)chamctxt;
 }
 
diff --git a/compute/pzsymm.c b/compute/pzsymm.c
index 481b32be8722314a7ae92c0939b6b8758df1824c..f4b76fb07154f656e2978ded283a327e8f223082 100644
--- a/compute/pzsymm.c
+++ b/compute/pzsymm.c
@@ -49,13 +49,11 @@ chameleon_pzsymm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
     int                 k, m, n, l, Am, An;
     int                 tempmm, tempnn, tempkn, tempkm;
     int                 myrank = RUNTIME_comm_rank( chamctxt );
-    int                 reduceC[ C->mt * C->nt ];
+    int8_t             *reduceC = calloc( C->mt * C->nt, sizeof(int8_t) );
 
     /* Set C tiles to redux mode */
     for (n = 0; n < C->nt; n++) {
         for (m = 0; m < C->mt; m++) {
-            reduceC[ n * C->mt + m ] = 0;
-
             /* The node owns the C tile. */
             if ( C->get_rankof( C(m, n) ) == myrank ) {
                 reduceC[ n * C->mt + m ] = 1;
@@ -279,6 +277,8 @@ chameleon_pzsymm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
         }
     }
     options->forcesub = 0;
+    free( reduceC );
+
     (void)chamctxt;
 }