diff --git a/compute/pzlatms.c b/compute/pzlatms.c
index bb76c30217b100090a4938324700344f985bb092..7a1334d9d479ba16df52429219644160fb8bd4be 100644
--- a/compute/pzlatms.c
+++ b/compute/pzlatms.c
@@ -63,6 +63,7 @@ zlaset_diag( const CHAM_desc_t *descA,
         A += lda + 1;
     }
 
+    (void)uplo;
     return 0;
 }
 
diff --git a/control/descriptor.c b/control/descriptor.c
index 7bb2f2ff1cbbc4ff52cf1638df1fbad46375e0f5..a24164cd6fd9a8c12f5ca6a77f9b569c2ee4e63c 100644
--- a/control/descriptor.c
+++ b/control/descriptor.c
@@ -304,6 +304,7 @@ int chameleon_desc_init_internal( CHAM_desc_t *desc, const char *name, void *mat
             break;
         }
         /* Otherwise we switch back to the full allocation */
+        chameleon_attr_fallthrough;
 
     case (intptr_t)CHAMELEON_MAT_ALLOC_GLOBAL:
         rc = chameleon_desc_mat_alloc( desc );
diff --git a/control/descriptor_rec.c b/control/descriptor_rec.c
index 78634600e9b4a8443d938eb574d349256b8dd69a..1bc506b6566165cd07929b86773969ddc8ca228f 100644
--- a/control/descriptor_rec.c
+++ b/control/descriptor_rec.c
@@ -51,7 +51,7 @@ chameleon_recdesc_create( const char *name, CHAM_desc_t **descptr, void *mat, ch
     /* Create the current layer descriptor */
     desc = (CHAM_desc_t*)malloc(sizeof(CHAM_desc_t));
     rc = chameleon_desc_init_internal( desc, name, mat, dtyp, mb[0], nb[0],
-                                       lm, ln, m, n, 1, 1,
+                                       lm, ln, m, n, p, q,
                                        get_blkaddr, get_blkldd, get_rankof );
     *descptr = desc;
 
diff --git a/runtime/starpu/codelets/codelet_zlantr.c b/runtime/starpu/codelets/codelet_zlantr.c
index c299fb82a70ff5b8536b5fb1abee3cb768db90a3..b45ca0d1203e7782bef13b2b2bb2edbe5ac974df 100644
--- a/runtime/starpu/codelets/codelet_zlantr.c
+++ b/runtime/starpu/codelets/codelet_zlantr.c
@@ -29,7 +29,9 @@
 static void cl_zlantr_cpu_func(void *descr[], void *cl_arg)
 {
     CHAM_tile_t *tilenormA;
-    cham_normtype_t norm, uplo, diag;
+    cham_normtype_t norm;
+    cham_uplo_t     uplo;
+    cham_diag_t     diag;
     int M, N;
     CHAM_tile_t *tileA;
     CHAM_tile_t *tilework;
diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c
index 9b802391aeb26b55c0968f7ebe7b5e281e67aa8f..8d20b3afa95dbcde2e7deef0171d4de4c3460450 100644
--- a/runtime/starpu/control/runtime_descriptor.c
+++ b/runtime/starpu/control/runtime_descriptor.c
@@ -210,7 +210,7 @@ void RUNTIME_desc_create( CHAM_desc_t *desc )
             chameleon_fatal_error("RUNTIME_desc_create", "Too many tiles in the descriptor for MPI tags");
             return;
         }
-        assert( (lmt*lnt) <= (1UL<<tag_sep) );
+        assert( ((uintptr_t)(lnt*lmt)) <= ((uintptr_t)(1UL<<tag_sep)) );
 
         if ( ((uintptr_t)desc->id) >= (uintptr_t)(1UL<<(tag_width-tag_sep)) ) {
             chameleon_fatal_error("RUNTIME_desc_create", "Number of descriptor available in MPI mode out of stock");
diff --git a/runtime/starpu/interface/cham_tile_interface.c b/runtime/starpu/interface/cham_tile_interface.c
index 92d2d42036d0a525e76649d8319cccfe904771b0..c95bf0b85a829b59b3c41e00024f57c4bcd46ad5 100644
--- a/runtime/starpu/interface/cham_tile_interface.c
+++ b/runtime/starpu/interface/cham_tile_interface.c
@@ -186,7 +186,7 @@ cti_free_data_on_node( void *data_interface, unsigned node )
     else
 #endif
     {
-        assert( (intptr_t)(cham_tile_interface->tile.mat) == cham_tile_interface->dev_handle );
+        assert( (uintptr_t)(cham_tile_interface->tile.mat) == cham_tile_interface->dev_handle );
     }
 
     starpu_free_on_node( node, cham_tile_interface->dev_handle, cham_tile_interface->allocsize );
@@ -334,6 +334,8 @@ cti_pack_data_hmat( starpu_cham_tile_interface_t *cham_tile_interface,
 {
 #if !defined(CHAMELEON_USE_HMAT)
     assert( 0 );
+    (void)cham_tile_interface;
+    (void)ptr;
 #else
     hmat_matrix_t *mat = cham_tile_interface->tile.mat;
     STARPU_ASSERT_MSG( mat != NULL, "cti_pack_data_hmat: Try to pack a NULL pointer\n" );
@@ -433,6 +435,8 @@ cti_unpack_data_hmat( starpu_cham_tile_interface_t *cham_tile_interface,
     assert( cham_tile_interface->tile.format & CHAMELEON_TILE_HMAT );
 #if !defined(CHAMELEON_USE_HMAT)
     assert( 0 );
+    (void)cham_tile_interface;
+    (void)ptr;
 #else
     hmat_matrix_t *mat = NULL;
     switch( cham_tile_interface->flttype ) {
diff --git a/testing/testing_zcesca.c b/testing/testing_zcesca.c
index 8fdcd839490fd5265ca32c940600a5d26ffc7546..4bc57a46f5231ccb989b138b4a0764d2ac866884 100644
--- a/testing/testing_zcesca.c
+++ b/testing/testing_zcesca.c
@@ -87,6 +87,7 @@ testing_zcesca( run_arg_list_t *args, int check )
 
     CHAMELEON_Desc_Destroy( &descA );
 
+    (void)check;
     return hres;
 }
 
diff --git a/testing/testing_zgram.c b/testing/testing_zgram.c
index edacb306a6de1f0f29dc3b2d0848c2418c443428..eca6b24f07505671d9a86e33228900b615fa28ec 100644
--- a/testing/testing_zgram.c
+++ b/testing/testing_zgram.c
@@ -87,6 +87,7 @@ testing_zgram( run_arg_list_t *args, int check )
 
     CHAMELEON_Desc_Destroy( &descA );
 
+    (void)check;
     return hres;
 }
 
diff --git a/testing/testing_zhemm.c b/testing/testing_zhemm.c
index ae396c1aac7d8c7ac77fe4e10d6d93942cb225be..c592e8ceeeca316b50c31ffeeed33ead1804a059 100644
--- a/testing/testing_zhemm.c
+++ b/testing/testing_zhemm.c
@@ -33,7 +33,7 @@ testing_zhemm( run_arg_list_t *args, int check )
     intptr_t              mtxfmt = parameters_getvalue_int( "mtxfmt" );
     int                   nb     = run_arg_get_int( args, "nb", 320 );
     int                   P      = parameters_getvalue_int( "P" );
-    cham_side_t           side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t           side   = run_arg_get_side( args, "side", ChamLeft );
     cham_uplo_t           uplo   = run_arg_get_uplo( args, "uplo", ChamUpper );
     int                   N      = run_arg_get_int( args, "N", 1000 );
     int                   M      = run_arg_get_int( args, "M", N );
diff --git a/testing/testing_zprint.c b/testing/testing_zprint.c
index 9b571e359c0fa37d63baa7adca97b10257be8bce..a73d7b7a6485127e6f829f842aca11c02e5321e2 100644
--- a/testing/testing_zprint.c
+++ b/testing/testing_zprint.c
@@ -128,6 +128,7 @@ testing_zprint( run_arg_list_t *args, int check )
     run_arg_add_fixdbl( args, "time", 1. );
     run_arg_add_fixdbl( args, "gflops", 1. );
 
+    (void)check;
     return hres;
 }
 
diff --git a/testing/testing_zsymm.c b/testing/testing_zsymm.c
index c37aec490c3a041d7b440f25dfab4b7486bb99fe..e4437d418b9b9d45235b8b42fa1bbef57555bf80 100644
--- a/testing/testing_zsymm.c
+++ b/testing/testing_zsymm.c
@@ -33,7 +33,7 @@ testing_zsymm( run_arg_list_t *args, int check )
     intptr_t              mtxfmt = parameters_getvalue_int( "mtxfmt" );
     int                   nb     = run_arg_get_int( args, "nb", 320 );
     int                   P      = parameters_getvalue_int( "P" );
-    cham_side_t           side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t           side   = run_arg_get_side( args, "side", ChamLeft );
     cham_uplo_t           uplo   = run_arg_get_uplo( args, "uplo", ChamUpper );
     int                   N      = run_arg_get_int( args, "N", 1000 );
     int                   M      = run_arg_get_int( args, "M", N );
diff --git a/testing/testing_ztrmm.c b/testing/testing_ztrmm.c
index 24a342fd768942686244056d6f09847ddf791055..bd226288f55c1dd64081027a319af67cafea38eb 100644
--- a/testing/testing_ztrmm.c
+++ b/testing/testing_ztrmm.c
@@ -34,7 +34,7 @@ testing_ztrmm( run_arg_list_t *args, int check )
     int                   nb     = run_arg_get_int( args, "nb", 320 );
     int                   P      = parameters_getvalue_int( "P" );
     cham_trans_t          trans  = run_arg_get_trans( args, "trans", ChamNoTrans );
-    cham_side_t           side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t           side   = run_arg_get_side( args, "side", ChamLeft );
     cham_uplo_t           uplo   = run_arg_get_uplo( args, "uplo", ChamUpper );
     cham_diag_t           diag   = run_arg_get_diag( args, "diag", ChamNonUnit );
     int                   N      = run_arg_get_int( args, "N", 1000 );
diff --git a/testing/testing_zunmlq.c b/testing/testing_zunmlq.c
index 8e811f900648c0179878e1132c661f90228dc1f1..f2708fa7e46546a30c50efec7269bda90d920cd6 100644
--- a/testing/testing_zunmlq.c
+++ b/testing/testing_zunmlq.c
@@ -34,7 +34,7 @@ testing_zunmlq( run_arg_list_t *args, int check )
     int          nb     = run_arg_get_int( args, "nb", 320 );
     int          ib     = run_arg_get_int( args, "ib", 48 );
     int          P      = parameters_getvalue_int( "P" );
-    cham_side_t  side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t  side   = run_arg_get_side( args, "side", ChamLeft );
     cham_trans_t trans  = run_arg_get_trans( args, "trans", ChamNoTrans );
     int          N      = run_arg_get_int( args, "N", 1000 );
     int          M      = run_arg_get_int( args, "M", N );
diff --git a/testing/testing_zunmlq_hqr.c b/testing/testing_zunmlq_hqr.c
index 156bb51404d1da96c9a039389096eff74e6c879f..d657648bd38dfe71b80324971b6e1827221e2f91 100644
--- a/testing/testing_zunmlq_hqr.c
+++ b/testing/testing_zunmlq_hqr.c
@@ -34,7 +34,7 @@ testing_zunmlq_hqr( run_arg_list_t *args, int check )
     int          nb     = run_arg_get_int( args, "nb", 320 );
     int          ib     = run_arg_get_int( args, "ib", 48 );
     int          P      = parameters_getvalue_int( "P" );
-    cham_side_t  side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t  side   = run_arg_get_side( args, "side", ChamLeft );
     cham_trans_t trans  = run_arg_get_trans( args, "trans", ChamNoTrans );
     int          N      = run_arg_get_int( args, "N", 1000 );
     int          M      = run_arg_get_int( args, "M", N );
diff --git a/testing/testing_zunmqr.c b/testing/testing_zunmqr.c
index f954246803bd09333e71f65065c5bfa978745e16..34fe5bc9a983661c149b1b2315d91ec2ab94e7c3 100644
--- a/testing/testing_zunmqr.c
+++ b/testing/testing_zunmqr.c
@@ -34,7 +34,7 @@ testing_zunmqr( run_arg_list_t *args, int check )
     int          nb     = run_arg_get_int( args, "nb", 320 );
     int          ib     = run_arg_get_int( args, "ib", 48 );
     int          P      = parameters_getvalue_int( "P" );
-    cham_side_t  side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t  side   = run_arg_get_side( args, "side", ChamLeft );
     cham_trans_t trans  = run_arg_get_trans( args, "trans", ChamNoTrans );
     int          N      = run_arg_get_int( args, "N", 1000 );
     int          M      = run_arg_get_int( args, "M", N );
diff --git a/testing/testing_zunmqr_hqr.c b/testing/testing_zunmqr_hqr.c
index 0c8748290b6ee26504477673d199384eb05058c7..e4f5e62b20fcbb704deb83f23c85cc4366c74fd8 100644
--- a/testing/testing_zunmqr_hqr.c
+++ b/testing/testing_zunmqr_hqr.c
@@ -34,7 +34,7 @@ testing_zunmqr_hqr( run_arg_list_t *args, int check )
     int          nb     = run_arg_get_int( args, "nb", 320 );
     int          ib     = run_arg_get_int( args, "ib", 48 );
     int          P      = parameters_getvalue_int( "P" );
-    cham_side_t  side   = run_arg_get_uplo( args, "side", ChamLeft );
+    cham_side_t  side   = run_arg_get_side( args, "side", ChamLeft );
     cham_trans_t trans  = run_arg_get_trans( args, "trans", ChamNoTrans );
     int          N      = run_arg_get_int( args, "N", 1000 );
     int          M      = run_arg_get_int( args, "M", N );