From: Yann Collet Date: Wed, 14 Nov 2018 00:04:35 +0000 (-0800) Subject: circumvent gcc-8 strict aliasing warning X-Git-Tag: v1.3.8~47^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=975abf8f5d2f4dd73421c48775209b5fb0d4a897;p=thirdparty%2Fzstd.git circumvent gcc-8 strict aliasing warning because gcc considers that `void* const *` and `void**` are 2 different types ... --- diff --git a/tests/fullbench.c b/tests/fullbench.c index 30f07b6cd..409de6395 100644 --- a/tests/fullbench.c +++ b/tests/fullbench.c @@ -515,6 +515,7 @@ static size_t benchMem(U32 benchNb, /* benchmark loop */ { BMK_timedFnState_t* const tfs = BMK_createTimedFnState(g_nbIterations * 1000, 1000); + void* const avoidStrictAliasingPtr = &dstBuff; BMK_benchParams_t bp; BMK_runTime_t bestResult; bestResult.sumOfReturn = 0; @@ -529,12 +530,13 @@ static size_t benchMem(U32 benchNb, bp.blockCount = 1; bp.srcBuffers = &src; bp.srcSizes = &srcSize; - bp.dstBuffers = (void* const*) &dstBuff; + bp.dstBuffers = (void* const*) avoidStrictAliasingPtr; /* circumvent strict aliasing warning on gcc-8, + * because gcc considers that `void* const *` and `void**` are 2 different types */ bp.dstCapacities = &dstBuffSize; bp.blockResults = NULL; for (;;) { - BMK_runOutcome_t const bOutcome = BMK_benchTimedFn( tfs, bp); + BMK_runOutcome_t const bOutcome = BMK_benchTimedFn(tfs, bp); if (!BMK_isSuccessful_runOutcome(bOutcome)) { DISPLAY("ERROR benchmarking function ! ! \n");