Fallthrough in LZ4 state machine for a MSVC bug

This works around an issue in
"Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32532 for x64"
with /O2. It seems to have trouble tying together the states, this
perhaps links the data and control flow more simply.
This commit is contained in:
Adam Gashlin 2023-06-12 00:18:18 -07:00
parent 53571e16f8
commit 0e453b2654

View File

@ -154,7 +154,7 @@ static int lz4mg_decompress(lz4mg_stream_t* strm) {
} while (next_len == LZ4MG_VARLEN_CONTINUE);
ctx->state = SET_MATCH;
break;
// Falthrough for MSVC
case SET_MATCH:
ctx->match_len += LZ4MG_MIN_MATCH_LEN;
@ -164,7 +164,7 @@ static int lz4mg_decompress(lz4mg_stream_t* strm) {
ctx->match_pos = LZ4MG_WINDOW_SIZE + ctx->match_pos;
ctx->state = COPY_MATCH;
break;
// Fallthrough for MSVC
case COPY_MATCH:
while (ctx->match_len > 0) {