diff --git a/spm.c b/spm.c
index 4039b39b0ef90548154807cab6549e4cf42ee2d2..4236d87f3e47b93b71855fd58819807be3875abd 100644
--- a/spm.c
+++ b/spm.c
@@ -156,6 +156,8 @@ spmUpdateComputedFields( pastix_spm_t *spm )
             colptr = spm->rowptr;
             rowptr = spm->colptr;
 
+            pastix_attr_fallthrough;
+
         case PastixCSC:
             for(j=0; j<spm->n; j++, colptr++) {
                 dofj = dofptr[j+1] - dofptr[j];
diff --git a/spm_gen_fake_values.c b/spm_gen_fake_values.c
index 3c641618dd0aed7554858b3a7b8f6f4015e885e3..fa01704c7f636b08d8086f4cc8d2ccec0782e8d4 100644
--- a/spm_gen_fake_values.c
+++ b/spm_gen_fake_values.c
@@ -59,6 +59,8 @@ spm_compute_degrees( const pastix_spm_t *spm,
         colptr = spm->rowptr;
         rowptr = spm->colptr;
 
+        pastix_attr_fallthrough;
+
     case PastixCSC:
         for(j=0; j<spm->n; j++, colptr++) {
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++) {
@@ -142,6 +144,8 @@ spm_add_diag( pastix_spm_t *spm,
         oldrow = spm->colptr;
         spm->colptr = newrow;
 
+        pastix_attr_fallthrough;
+
     case PastixCSC:
         newcol = oldcol;
         if ( spm->fmttype == PastixCSC ) {
@@ -252,6 +256,8 @@ spm_generate_fake_values( pastix_spm_t *spm,
         colptr = spm->rowptr;
         rowptr = spm->colptr;
 
+        pastix_attr_fallthrough;
+
     case PastixCSC:
         for(j=0; j<spm->n; j++, colptr++) {
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++, values++) {
diff --git a/z_spm_convert_to_csc.c b/z_spm_convert_to_csc.c
index 3c66d83277809c96705bd94a0de6d712708d7283..d6d56196cb87835b0470b0cf21049cbab67b01a4 100644
--- a/z_spm_convert_to_csc.c
+++ b/z_spm_convert_to_csc.c
@@ -172,6 +172,7 @@ z_spmConvertCSR2CSC( pastix_spm_t *spm )
             }
         }
     }
+    pastix_attr_fallthrough;
 #endif
     case PastixSymmetric:
     {
diff --git a/z_spm_convert_to_csr.c b/z_spm_convert_to_csr.c
index c490d3c6592470773bf0c674e800db1e7754f375..2494461ccd1f8324095602e463e80fb3402ba1e8 100644
--- a/z_spm_convert_to_csr.c
+++ b/z_spm_convert_to_csr.c
@@ -63,6 +63,7 @@ z_spmConvertCSC2CSR( pastix_spm_t *spm )
             }
         }
     }
+    pastix_attr_fallthrough;
 #endif
     case PastixSymmetric:
     {
diff --git a/z_spm_dof_extend.c b/z_spm_dof_extend.c
index 3044b491f3b7da9c944223b254ec00d4993e546b..1bce155ca88ae65c8f2ec5f5e0dd87ce7cc9f724 100644
--- a/z_spm_dof_extend.c
+++ b/z_spm_dof_extend.c
@@ -53,6 +53,8 @@ z_spmDofExtend(pastix_spm_t *spm)
         colptr = spm->rowptr;
         rowptr = spm->colptr;
 
+        pastix_attr_fallthrough;
+
     case PastixCSC:
         /**
          * Loop on col