Skip to content

Commit aa011a7

Browse files
authored
Merge pull request #22001 from JuliaLang/yyc/warning
Fix fallthrough warning on gcc 7
2 parents c2502c9 + 6e8a1e3 commit aa011a7

File tree

5 files changed

+53
-37
lines changed

5 files changed

+53
-37
lines changed

src/flisp/print.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ void fl_print_child(fl_context_t *fl_ctx, ios_t *f, value_t v)
448448
case TAG_CVALUE:
449449
case TAG_CPRIM:
450450
if (v == UNBOUND) { outs(fl_ctx, "#<undefined>", f); break; }
451+
JL_FALLTHROUGH;
451452
case TAG_VECTOR:
452453
case TAG_CONS:
453454
if (print_circle_prefix(fl_ctx, f, v)) break;

src/init.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ static void *init_stdio_handle(uv_file fd,int readable)
363363
}
364364
#endif
365365
// ...and continue on as in the UV_FILE case
366+
JL_FALLTHROUGH;
366367
case UV_FILE:
367368
file = (jl_uv_file_t*)malloc(sizeof(jl_uv_file_t));
368369
file->loop = jl_io_loop;

src/support/MurmurHash3.c

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ void MurmurHash3_x86_32 ( const void * key, int len,
129129

130130
switch(len & 3)
131131
{
132-
case 3: k1 ^= tail[2] << 16;
133-
case 2: k1 ^= tail[1] << 8;
132+
case 3: k1 ^= tail[2] << 16; JL_FALLTHROUGH;
133+
case 2: k1 ^= tail[1] << 8; JL_FALLTHROUGH;
134134
case 1: k1 ^= tail[0];
135135
k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
136136
};
@@ -204,26 +204,29 @@ void MurmurHash3_x86_128 ( const void * key, const int len,
204204

205205
switch(len & 15)
206206
{
207-
case 15: k4 ^= tail[14] << 16;
208-
case 14: k4 ^= tail[13] << 8;
207+
case 15: k4 ^= tail[14] << 16; JL_FALLTHROUGH;
208+
case 14: k4 ^= tail[13] << 8; JL_FALLTHROUGH;
209209
case 13: k4 ^= tail[12] << 0;
210210
k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
211+
JL_FALLTHROUGH;
211212

212-
case 12: k3 ^= tail[11] << 24;
213-
case 11: k3 ^= tail[10] << 16;
214-
case 10: k3 ^= tail[ 9] << 8;
213+
case 12: k3 ^= tail[11] << 24; JL_FALLTHROUGH;
214+
case 11: k3 ^= tail[10] << 16; JL_FALLTHROUGH;
215+
case 10: k3 ^= tail[ 9] << 8; JL_FALLTHROUGH;
215216
case 9: k3 ^= tail[ 8] << 0;
216217
k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
218+
JL_FALLTHROUGH;
217219

218-
case 8: k2 ^= tail[ 7] << 24;
219-
case 7: k2 ^= tail[ 6] << 16;
220-
case 6: k2 ^= tail[ 5] << 8;
220+
case 8: k2 ^= tail[ 7] << 24; JL_FALLTHROUGH;
221+
case 7: k2 ^= tail[ 6] << 16; JL_FALLTHROUGH;
222+
case 6: k2 ^= tail[ 5] << 8; JL_FALLTHROUGH;
221223
case 5: k2 ^= tail[ 4] << 0;
222224
k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
225+
JL_FALLTHROUGH;
223226

224-
case 4: k1 ^= tail[ 3] << 24;
225-
case 3: k1 ^= tail[ 2] << 16;
226-
case 2: k1 ^= tail[ 1] << 8;
227+
case 4: k1 ^= tail[ 3] << 24; JL_FALLTHROUGH;
228+
case 3: k1 ^= tail[ 2] << 16; JL_FALLTHROUGH;
229+
case 2: k1 ^= tail[ 1] << 8; JL_FALLTHROUGH;
227230
case 1: k1 ^= tail[ 0] << 0;
228231
k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
229232
};
@@ -293,22 +296,23 @@ void MurmurHash3_x64_128 ( const void * key, const int len,
293296

294297
switch(len & 15)
295298
{
296-
case 15: k2 ^= ((uint64_t)(tail[14])) << 48;
297-
case 14: k2 ^= ((uint64_t)(tail[13])) << 40;
298-
case 13: k2 ^= ((uint64_t)(tail[12])) << 32;
299-
case 12: k2 ^= ((uint64_t)(tail[11])) << 24;
300-
case 11: k2 ^= ((uint64_t)(tail[10])) << 16;
301-
case 10: k2 ^= ((uint64_t)(tail[ 9])) << 8;
299+
case 15: k2 ^= ((uint64_t)(tail[14])) << 48; JL_FALLTHROUGH;
300+
case 14: k2 ^= ((uint64_t)(tail[13])) << 40; JL_FALLTHROUGH;
301+
case 13: k2 ^= ((uint64_t)(tail[12])) << 32; JL_FALLTHROUGH;
302+
case 12: k2 ^= ((uint64_t)(tail[11])) << 24; JL_FALLTHROUGH;
303+
case 11: k2 ^= ((uint64_t)(tail[10])) << 16; JL_FALLTHROUGH;
304+
case 10: k2 ^= ((uint64_t)(tail[ 9])) << 8; JL_FALLTHROUGH;
302305
case 9: k2 ^= ((uint64_t)(tail[ 8])) << 0;
303306
k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
304-
305-
case 8: k1 ^= ((uint64_t)(tail[ 7])) << 56;
306-
case 7: k1 ^= ((uint64_t)(tail[ 6])) << 48;
307-
case 6: k1 ^= ((uint64_t)(tail[ 5])) << 40;
308-
case 5: k1 ^= ((uint64_t)(tail[ 4])) << 32;
309-
case 4: k1 ^= ((uint64_t)(tail[ 3])) << 24;
310-
case 3: k1 ^= ((uint64_t)(tail[ 2])) << 16;
311-
case 2: k1 ^= ((uint64_t)(tail[ 1])) << 8;
307+
JL_FALLTHROUGH;
308+
309+
case 8: k1 ^= ((uint64_t)(tail[ 7])) << 56; JL_FALLTHROUGH;
310+
case 7: k1 ^= ((uint64_t)(tail[ 6])) << 48; JL_FALLTHROUGH;
311+
case 6: k1 ^= ((uint64_t)(tail[ 5])) << 40; JL_FALLTHROUGH;
312+
case 5: k1 ^= ((uint64_t)(tail[ 4])) << 32; JL_FALLTHROUGH;
313+
case 4: k1 ^= ((uint64_t)(tail[ 3])) << 24; JL_FALLTHROUGH;
314+
case 3: k1 ^= ((uint64_t)(tail[ 2])) << 16; JL_FALLTHROUGH;
315+
case 2: k1 ^= ((uint64_t)(tail[ 1])) << 8; JL_FALLTHROUGH;
312316
case 1: k1 ^= ((uint64_t)(tail[ 0])) << 0;
313317
k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
314318
};

src/support/dtypes.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,14 @@ typedef enum { T_INT8, T_UINT8, T_INT16, T_UINT16, T_INT32, T_UINT32,
204204
# define T_SIZE T_UINT32
205205
#endif
206206

207+
#if defined(__GNUC__) && __GNUC__ >= 7
208+
#define JL_FALLTHROUGH __attribute__((fallthrough))
209+
#elif defined(__cplusplus) && defined(__clang_major__) && \
210+
defined(__clang_minor__) && (__clang_major__ > 4 || __clang_minor__ >= 5)
211+
// We require at least clang 3.x
212+
#define JL_FALLTHROUGH [[clang::fallthrough]]
213+
#else
214+
#define JL_FALLTHROUGH
215+
#endif
216+
207217
#endif /* DTYPES_H */

src/support/utf8.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,11 @@ size_t u8_toucs(uint32_t *dest, size_t sz, const char *src, size_t srcsz)
109109
ch = 0;
110110
switch (nb) {
111111
/* these fall through deliberately */
112-
case 5: ch += (unsigned char)*src++; ch <<= 6;
113-
case 4: ch += (unsigned char)*src++; ch <<= 6;
114-
case 3: ch += (unsigned char)*src++; ch <<= 6;
115-
case 2: ch += (unsigned char)*src++; ch <<= 6;
116-
case 1: ch += (unsigned char)*src++; ch <<= 6;
112+
case 5: ch += (unsigned char)*src++; ch <<= 6; JL_FALLTHROUGH;
113+
case 4: ch += (unsigned char)*src++; ch <<= 6; JL_FALLTHROUGH;
114+
case 3: ch += (unsigned char)*src++; ch <<= 6; JL_FALLTHROUGH;
115+
case 2: ch += (unsigned char)*src++; ch <<= 6; JL_FALLTHROUGH;
116+
case 1: ch += (unsigned char)*src++; ch <<= 6; JL_FALLTHROUGH;
117117
case 0: ch += (unsigned char)*src++;
118118
}
119119
ch -= offsetsFromUTF8[nb];
@@ -252,11 +252,11 @@ size_t u8_strwidth(const char *s)
252252
ch = 0;
253253
switch (nb) {
254254
/* these fall through deliberately */
255-
case 5: ch += (unsigned char)*s++; ch <<= 6;
256-
case 4: ch += (unsigned char)*s++; ch <<= 6;
257-
case 3: ch += (unsigned char)*s++; ch <<= 6;
258-
case 2: ch += (unsigned char)*s++; ch <<= 6;
259-
case 1: ch += (unsigned char)*s++; ch <<= 6;
255+
case 5: ch += (unsigned char)*s++; ch <<= 6; JL_FALLTHROUGH;
256+
case 4: ch += (unsigned char)*s++; ch <<= 6; JL_FALLTHROUGH;
257+
case 3: ch += (unsigned char)*s++; ch <<= 6; JL_FALLTHROUGH;
258+
case 2: ch += (unsigned char)*s++; ch <<= 6; JL_FALLTHROUGH;
259+
case 1: ch += (unsigned char)*s++; ch <<= 6; JL_FALLTHROUGH;
260260
case 0: ch += (unsigned char)*s++;
261261
}
262262
ch -= offsetsFromUTF8[nb];

0 commit comments

Comments
 (0)