diff --git a/compute/zgesvd.c b/compute/zgesvd.c
index bdc66a5c2b9c7efc6dee0560991273fcd03c6ae3..945783ccb79308d7b53b209644d91fc61dfc5e93 100644
--- a/compute/zgesvd.c
+++ b/compute/zgesvd.c
@@ -489,11 +489,10 @@ int CHAMELEON_zgesvd_Tile_Async( cham_job_t jobu, cham_job_t jobvt,
     /* On exit, U and VT are updated with bidiagonal matrix singular vectors */
 #if !defined(CHAMELEON_SIMULATION)
     {
-        int nru, ncvt;
+        cham_uplo_t uplo;
+        int info, nru, ncvt;
+
         switch ( jobu ) {
-            case ChamNoVec :
-                nru = 0;
-                break;
             case ChamOVec :
             case ChamAllVec :
                 nru = M;
@@ -501,13 +500,11 @@ int CHAMELEON_zgesvd_Tile_Async( cham_job_t jobu, cham_job_t jobvt,
             case ChamSVec :
                 nru = MINMN;
                 break;
+            case ChamNoVec :
             default:
-            ;
+                nru = 0;
         }
         switch ( jobvt ) {
-            case ChamNoVec :
-                ncvt = 0;
-                break;
             case ChamOVec :
             case ChamAllVec :
                 ncvt = N;
@@ -515,12 +512,13 @@ int CHAMELEON_zgesvd_Tile_Async( cham_job_t jobu, cham_job_t jobvt,
             case ChamSVec :
                 ncvt = MINMN;
                 break;
+            case ChamNoVec :
             default:
-            ;
+                ncvt = 0;
         }
-        cham_uplo_t uplo = M >= N ? ChamUpper : ChamLower;
-        int info = LAPACKE_zbdsqr( LAPACK_COL_MAJOR, chameleon_lapack_const(uplo), MINMN,
-                                   ncvt, nru, 0, S, E, VT, LDVT, U, LDU, NULL, 1 );
+        uplo = M >= N ? ChamUpper : ChamLower;
+        info = LAPACKE_zbdsqr( LAPACK_COL_MAJOR, chameleon_lapack_const(uplo), MINMN,
+                               ncvt, nru, 0, S, E, VT, LDVT, U, LDU, NULL, 1 );
         if ( info != 0 ) {
             fprintf(stderr, "CHAMELEON_zgesvd_Tile_Async: LAPACKE_zbdsqr = %d\n", info );
         }
diff --git a/cudablas/compute/cuda_zlarfb.c b/cudablas/compute/cuda_zlarfb.c
index 6f460d3517cc7bdda161757cc5904cd1e9153e8e..5039d0265ca88a197568f7aa597384f44b212f08 100644
--- a/cudablas/compute/cuda_zlarfb.c
+++ b/cudablas/compute/cuda_zlarfb.c
@@ -157,5 +157,6 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
                           CUBLAS_SADDR(zone),  C,    LDC );
         assert( rc == CUBLAS_STATUS_SUCCESS );
     }
-    return CHAMELEON_SUCCESS;
+
+    return (rc == CUBLAS_STATUS_SUCCESS) ? CHAMELEON_SUCCESS : CHAMELEON_ERR_UNEXPECTED;
 }
diff --git a/cudablas/compute/cuda_zparfb.c b/cudablas/compute/cuda_zparfb.c
index ee2329d398bd03f7cda98be9451347409ef3356a..39aaa7586df4ec0ca904997dd7e9fca7e28c3106 100644
--- a/cudablas/compute/cuda_zparfb.c
+++ b/cudablas/compute/cuda_zparfb.c
@@ -525,5 +525,5 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
         return CHAMELEON_ERR_NOT_SUPPORTED;
     }
 
-    return CHAMELEON_SUCCESS;
+    return (rc == CUBLAS_STATUS_SUCCESS) ? CHAMELEON_SUCCESS : CHAMELEON_ERR_UNEXPECTED;
 }
diff --git a/runtime/starpu/codelets/codelet_zgersum.c b/runtime/starpu/codelets/codelet_zgersum.c
index 079302b05812e371092cca7ceedbfe21526a3ea8..5a53839a635243b0fb8904cd7768d852a984b70a 100644
--- a/runtime/starpu/codelets/codelet_zgersum.c
+++ b/runtime/starpu/codelets/codelet_zgersum.c
@@ -45,10 +45,14 @@ cl_zgersum_redux_cpu_func( void *descr[], void *cl_arg )
 static void
 cl_zgersum_redux_cuda_func( void *descr[], void *cl_arg )
 {
-    cublasHandle_t        handle = starpu_cublas_get_local_handle();
-    CHAMELEON_Complex64_t zone   = 1.;
-    CHAM_tile_t          *tileA;
-    CHAM_tile_t          *tileB;
+#if defined(PRECISION_z) || defined(PRECISION_c)
+    cuDoubleComplex zone  = make_cuDoubleComplex(1.0, 0.0);
+#else
+    double zone  = 1.0;
+#endif /* defined(PRECISION_z) || defined(PRECISION_c) */
+    cublasHandle_t  handle = starpu_cublas_get_local_handle();
+    CHAM_tile_t    *tileA;
+    CHAM_tile_t    *tileB;
 
     tileA = cti_interface_get(descr[0]);
     tileB = cti_interface_get(descr[1]);
@@ -99,6 +103,7 @@ cl_zgersum_init_cuda_func( void *descr[], void *cl_arg )
     assert( rc == CUBLAS_STATUS_SUCCESS );
 
     (void)cl_arg;
+    (void)rc;
 }
 #endif /* defined(CHAMELEON_USE_CUDA) */
 #endif /* !defined(CHAMELEON_SIMULATION) */
diff --git a/runtime/starpu/interface/cham_tile_interface.c b/runtime/starpu/interface/cham_tile_interface.c
index f74623e63dc725cb69d3d123b66fe623e98e5235..51e6a4b041fb50ff2f98f52f5830799875bc7af4 100644
--- a/runtime/starpu/interface/cham_tile_interface.c
+++ b/runtime/starpu/interface/cham_tile_interface.c
@@ -115,7 +115,7 @@ cti_init( void *data_interface )
 
 static void
 cti_register_data_handle( starpu_data_handle_t  handle,
-                          int                   home_node,
+                          unsigned int          home_node,
                           void                 *data_interface )
 {
     starpu_cham_tile_interface_t *cham_tile_interface = (starpu_cham_tile_interface_t *) data_interface;
diff --git a/testing/testing_zcheck_svd.c b/testing/testing_zcheck_svd.c
index b09602679be7250da1444db10ce588b02481357c..f6d9c9046e406f50097fb243565e0fe1f0b8ffd6 100644
--- a/testing/testing_zcheck_svd.c
+++ b/testing/testing_zcheck_svd.c
@@ -229,7 +229,8 @@ int check_zgesvd( run_arg_list_t *args, cham_job_t jobu, cham_job_t jobvt, CHAM_
 {
     int info_solution;
     int rank = CHAMELEON_Comm_rank();
-    CHAMELEON_Complex64_t *Ainit, *A;
+    CHAMELEON_Complex64_t *Ainit = NULL;
+    CHAMELEON_Complex64_t *A     = NULL;
     int M    = descA->m;
     int N    = descA->n;
     int LDA  = descA->lm;