diff --git a/control/descriptor.h b/control/descriptor.h
index 2981f9685da6ebc709d790a88aa9c95fa784845a..e60b3909fd3d3483a935c309a532a1dafe8699fe 100644
--- a/control/descriptor.h
+++ b/control/descriptor.h
@@ -205,20 +205,31 @@ inline static int morse_desc_islocal( const MORSE_desc_t *A, int m, int n )
  * MORSE_END_ACCESS_DECLARATION
  */
 #define MORSE_BEGIN_ACCESS_DECLARATION { \
-    unsigned __morse_need_submit = 0;
+    unsigned __morse_need_submit = 0; \
+    RUNTIME_BEGIN_ACCESS_DECLARATION
 
-#define MORSE_ACCESS_R(A, Am, An) \
-    if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1;
+#define MORSE_ACCESS_R(A, Am, An) do { \
+    if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \
+    RUNTIME_ACCESS_R(A, Am, An) \
+} while(0)
 
-#define MORSE_ACCESS_W(A, Am, An) \
-    if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1;
+#define MORSE_ACCESS_W(A, Am, An) do { \
+    if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \
+    RUNTIME_ACCESS_W(A, Am, An) \
+} while(0)
 
-#define MORSE_ACCESS_RW(A, Am, An) \
-    if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1;
+#define MORSE_ACCESS_RW(A, Am, An) do { \
+    if (morse_desc_islocal(A, Am, An)) __morse_need_submit = 1; \
+    RUNTIME_ACCESS_RW(A, Am, An) \
+} while(0)
 
-#define MORSE_RANK_CHANGED __morse_need_submit = 1;
+#define MORSE_RANK_CHANGED(rank) do {\
+    __morse_need_submit = 1; \
+    RUNTIME_RANK_CHANGED(rank) \
+} while (0)
 
 #define MORSE_END_ACCESS_DECLARATION \
+    RUNTIME_END_ACCESS_DECLARATION \
     if (!__morse_need_submit) return; \
 }
 
diff --git a/runtime/parsec/include/morse_parsec.h b/runtime/parsec/include/morse_parsec.h
index 00acf344e789a31b773c2c253c006f1470a67db7..bdaaece06a48225263d564ce6cfdfac27b629254 100644
--- a/runtime/parsec/include/morse_parsec.h
+++ b/runtime/parsec/include/morse_parsec.h
@@ -24,4 +24,16 @@ typedef struct morse_parsec_desc_s morse_parsec_desc_t;
  */
 #define RTBLKADDR( desc, type, m, n ) ( dague_dtd_tile_of( DAGUE_dtd_handle, (desc)->schedopt, m, n ) )
 
+#define RUNTIME_BEGIN_ACCESS_DECLARATION
+
+#define RUNTIME_ACCESS_R(A, Am, An)
+
+#define RUNTIME_ACCESS_W(A, Am, An)
+
+#define RUNTIME_ACCESS_RW(A, Am, An)
+
+#define RUNTIME_RANK_CHANGED(rank)
+
+#define RUNTIME_END_ACCESS_DECLARATION
+
 #endif /* _MORSE_PARSEC_H_ */
diff --git a/runtime/quark/include/morse_quark.h b/runtime/quark/include/morse_quark.h
index 648c2c4875d42b1d95862002bbb817bcb87cf821..e841a251e55f571a39002967e7fd3cc3933b830e 100644
--- a/runtime/quark/include/morse_quark.h
+++ b/runtime/quark/include/morse_quark.h
@@ -47,4 +47,16 @@ typedef struct quark_option_s {
  */
 #define RTBLKADDR( desc, type, m, n ) ( (type*)RUNTIME_desc_getaddr( desc, m, n ) )
 
+#define RUNTIME_BEGIN_ACCESS_DECLARATION
+
+#define RUNTIME_ACCESS_R(A, Am, An)
+
+#define RUNTIME_ACCESS_W(A, Am, An)
+
+#define RUNTIME_ACCESS_RW(A, Am, An)
+
+#define RUNTIME_RANK_CHANGED(rank)
+
+#define RUNTIME_END_ACCESS_DECLARATION
+
 #endif /* _MORSE_QUARK_H_ */
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(
diff --git a/runtime/starpu/include/morse_starpu.h b/runtime/starpu/include/morse_starpu.h
index 2f0ff0356241975c1082f3648fe69acb95e2d63c..473e68aa8c3691cef051b45573f66ef615f4c446 100644
--- a/runtime/starpu/include/morse_starpu.h
+++ b/runtime/starpu/include/morse_starpu.h
@@ -86,4 +86,16 @@ typedef struct starpu_conf starpu_conf_t;
 
 void RUNTIME_set_reduction_methods(starpu_data_handle_t handle, MORSE_enum dtyp);
 
+#define RUNTIME_BEGIN_ACCESS_DECLARATION
+
+#define RUNTIME_ACCESS_R(A, Am, An)
+
+#define RUNTIME_ACCESS_W(A, Am, An)
+
+#define RUNTIME_ACCESS_RW(A, Am, An)
+
+#define RUNTIME_RANK_CHANGED(rank)
+
+#define RUNTIME_END_ACCESS_DECLARATION
+
 #endif /* _MORSE_STARPU_H_ */