diff --git a/runtime/starpu/codelets/codelet_zlacpy.c b/runtime/starpu/codelets/codelet_zlacpy.c
index 40bbca3a232874634d733c811401cd9578884df4..daa6ba6bb6e64349c4f5b37a17c7fc979b6e1e9a 100644
--- a/runtime/starpu/codelets/codelet_zlacpy.c
+++ b/runtime/starpu/codelets/codelet_zlacpy.c
@@ -132,12 +132,10 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options,
                           int displA, const CHAM_desc_t *A, int Am, int An, int lda,
                           int displB, const CHAM_desc_t *B, int Bm, int Bn, int ldb )
 {
-    struct cl_zlacpy_args_s *clargs = NULL;
-    void (*callback)(void*);
-    int                      exec = 0;
-    char                    *cl_name = "zlacpyx";
-    CHAM_tile_t             *tileA   = A->get_blktile( A, Am, An );
-    CHAM_tile_t             *tileB   = B->get_blktile( B, Bm, Bn );
+    int          exec    = 0;
+    char        *cl_name = "zlacpyx";
+    CHAM_tile_t *tileA   = A->get_blktile( A, Am, An );
+    CHAM_tile_t *tileB   = B->get_blktile( B, Bm, Bn );
 
     /* Handle cache */
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -146,20 +144,6 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options,
     exec = __chameleon_need_exec;
     CHAMELEON_END_ACCESS_DECLARATION;
 
-    if ( exec ) {
-        clargs = malloc( sizeof( struct cl_zlacpy_args_s ) );
-        clargs->uplo   = uplo;
-        clargs->m      = m;
-        clargs->n      = n;
-        clargs->displA = displA;
-        clargs->displB = displB;
-        clargs->lda    = lda;
-        clargs->ldb    = ldb;
-    }
-
-    /* Callback fro profiling information */
-    callback = options->profiling ? cl_zlacpyx_callback : NULL;
-
 #if !defined(CHAMELEON_USE_MPI) || defined(HAVE_STARPU_MPI_DATA_CPY_PRIORITY)
     /* Insert the task */
     if ( (uplo == ChamUpperLower) &&
@@ -180,6 +164,23 @@ void INSERT_TASK_zlacpyx( const RUNTIME_option_t *options,
     else
 #endif
     {
+        struct cl_zlacpy_args_s *clargs = NULL;
+        void (*callback)(void*);
+
+        if ( exec ) {
+            clargs = malloc( sizeof( struct cl_zlacpy_args_s ) );
+            clargs->uplo   = uplo;
+            clargs->m      = m;
+            clargs->n      = n;
+            clargs->displA = displA;
+            clargs->displB = displB;
+            clargs->lda    = lda;
+            clargs->ldb    = ldb;
+        }
+
+        /* Callback fro profiling information */
+        callback = options->profiling ? cl_zlacpyx_callback : NULL;
+
         /* Insert the task */
         rt_starpu_insert_task(
             &cl_zlacpyx,
@@ -208,12 +209,10 @@ void INSERT_TASK_zlacpy( const RUNTIME_option_t *options,
                          const CHAM_desc_t *A, int Am, int An,
                          const CHAM_desc_t *B, int Bm, int Bn )
 {
-    struct cl_zlacpy_args_s *clargs = NULL;
-    void (*callback)(void*);
-    int                      exec    = 0;
-    char                    *cl_name = "zlacpy";
-    CHAM_tile_t             *tileA   = A->get_blktile( A, Am, An );
-    CHAM_tile_t             *tileB   = B->get_blktile( B, Bm, Bn );
+    int          exec    = 0;
+    char        *cl_name = "zlacpy";
+    CHAM_tile_t *tileA   = A->get_blktile( A, Am, An );
+    CHAM_tile_t *tileB   = B->get_blktile( B, Bm, Bn );
 
         /* Handle cache */
     CHAMELEON_BEGIN_ACCESS_DECLARATION;
@@ -222,20 +221,6 @@ void INSERT_TASK_zlacpy( const RUNTIME_option_t *options,
     exec = __chameleon_need_exec;
     CHAMELEON_END_ACCESS_DECLARATION;
 
-    if ( exec ) {
-        clargs = malloc( sizeof( struct cl_zlacpy_args_s ) );
-        clargs->uplo   = uplo;
-        clargs->m      = m;
-        clargs->n      = n;
-        clargs->displA = 0;
-        clargs->displB = 0;
-        clargs->lda    = tileA->ld;
-        clargs->ldb    = tileB->ld;
-    }
-
-    /* Callback fro profiling information */
-    callback = options->profiling ? cl_zlacpy_callback : NULL;
-
 #if !defined(CHAMELEON_USE_MPI) || defined(HAVE_STARPU_MPI_DATA_CPY_PRIORITY)
     /* Insert the task */
     if ( (uplo == ChamUpperLower) &&
@@ -255,6 +240,23 @@ void INSERT_TASK_zlacpy( const RUNTIME_option_t *options,
     else
 #endif
     {
+        struct cl_zlacpy_args_s *clargs = NULL;
+        void (*callback)(void*);
+
+        if ( exec ) {
+            clargs = malloc( sizeof( struct cl_zlacpy_args_s ) );
+            clargs->uplo   = uplo;
+            clargs->m      = m;
+            clargs->n      = n;
+            clargs->displA = 0;
+            clargs->displB = 0;
+            clargs->lda    = tileA->ld;
+            clargs->ldb    = tileB->ld;
+        }
+
+        /* Callback for profiling information */
+        callback = options->profiling ? cl_zlacpy_callback : NULL;
+
         rt_starpu_insert_task(
             &cl_zlacpy,
             /* Task codelet arguments */