diff --git a/control/descriptor.h b/control/descriptor.h
index 78b31a951d0156a8780cc8c28d54959a2a3803ae..81845756b9852c36d96fd51fc1c2a8756eaff0b0 100644
--- a/control/descriptor.h
+++ b/control/descriptor.h
@@ -220,7 +220,7 @@ inline static int morse_desc_islocal( const MORSE_desc_t *A, int m, int n )
     if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \
     RUNTIME_ACCESS_RW(A, Am, An)
 
-#define MORSE_RANK_CHANGED __morse_need_submit = 1;
+#define MORSE_RANK_CHANGED(rank) __morse_need_submit = 1;
 
 #define MORSE_END_ACCESS_DECLARATION \
     RUNTIME_END_ACCESS_DECLARATION \
diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c
index ed5ff9d571be4c9ccf6f657e286c1338f5c41fa0..292e071de10a48b70fb34fa6e91ad2dfdc3c7de4 100644
--- a/runtime/starpu/codelets/codelet_zgemm.c
+++ b/runtime/starpu/codelets/codelet_zgemm.c
@@ -75,7 +75,7 @@ void MORSE_TASK_zgemm(const MORSE_option_t *options,
     MORSE_ACCESS_R(B, Bm, Bn);
     MORSE_ACCESS_RW(C, Cm, Cn);
     if (rank_changed)
-        MORSE_RANK_CHANGED;
+        MORSE_RANK_CHANGED(execution_rank);
     MORSE_END_ACCESS_DECLARATION;
 
     starpu_insert_task(
diff --git a/runtime/starpu/codelets/codelet_ztrsm.c b/runtime/starpu/codelets/codelet_ztrsm.c
index 061c264121b27baf69d7906300551697302f4fba..76903283298f39b36ee4bcfea4263b563a5434ca 100644
--- a/runtime/starpu/codelets/codelet_ztrsm.c
+++ b/runtime/starpu/codelets/codelet_ztrsm.c
@@ -68,7 +68,7 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options,
     MORSE_ACCESS_R(A, Am, An);
     MORSE_ACCESS_RW(B, Bm, Bn);
     if (rank_changed)
-        MORSE_RANK_CHANGED;
+        MORSE_RANK_CHANGED(execution_rank);
     MORSE_END_ACCESS_DECLARATION;
 
     starpu_insert_task(
diff --git a/runtime/starpu/codelets/codelet_ztsmqr.c b/runtime/starpu/codelets/codelet_ztsmqr.c
index 3f26f7c5803992b3c8af206676ef4acb6a7c15d6..665628cf4f9283f0dea3bcbe67dd3ebda5b8f590 100644
--- a/runtime/starpu/codelets/codelet_ztsmqr.c
+++ b/runtime/starpu/codelets/codelet_ztsmqr.c
@@ -176,7 +176,7 @@ void MORSE_TASK_ztsmqr(const MORSE_option_t *options,
     MORSE_ACCESS_R(V, Vm, Vn);
     MORSE_ACCESS_R(T, Tm, Tn);
     if (rank_changed)
-        MORSE_RANK_CHANGED;
+        MORSE_RANK_CHANGED(execution_rank);
     MORSE_END_ACCESS_DECLARATION;
 
     starpu_insert_task(
diff --git a/runtime/starpu/codelets/codelet_zttmqr.c b/runtime/starpu/codelets/codelet_zttmqr.c
index f16d3f0b07408cdb4b75bd22e850d872571cbe22..3368c6da7ecfb8bd00a7d269d98e88f487159144 100644
--- a/runtime/starpu/codelets/codelet_zttmqr.c
+++ b/runtime/starpu/codelets/codelet_zttmqr.c
@@ -169,7 +169,7 @@ void MORSE_TASK_zttmqr(const MORSE_option_t *options,
     MORSE_ACCESS_R(V, Vm, Vn);
     MORSE_ACCESS_R(T, Tm, Tn);
     if (rank_changed)
-        MORSE_RANK_CHANGED;
+        MORSE_RANK_CHANGED(execution_rank);
     MORSE_END_ACCESS_DECLARATION;
 
     starpu_insert_task(
diff --git a/runtime/starpu/codelets/codelet_zunmqr.c b/runtime/starpu/codelets/codelet_zunmqr.c
index 3c981f4bbb0a2349580ed9d6443b914389e388cd..2b88c1d3b90206b3acd2cc1a238a0ca578c81beb 100644
--- a/runtime/starpu/codelets/codelet_zunmqr.c
+++ b/runtime/starpu/codelets/codelet_zunmqr.c
@@ -153,7 +153,7 @@ void MORSE_TASK_zunmqr(const MORSE_option_t *options,
     MORSE_ACCESS_R(T, Tm, Tn);
     MORSE_ACCESS_RW(C, Cm, Cn);
     if (rank_changed)
-        MORSE_RANK_CHANGED;
+        MORSE_RANK_CHANGED(execution_rank);
     MORSE_END_ACCESS_DECLARATION;
 
     starpu_insert_task(