[FFmpeg-devel] [PATCH] all: Replace if (ARCH_FOO) checks by #if ARCH_FOO

Soft Works softworkz at hotmail.com
Sun Jun 12 11:17:26 EEST 2022



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Andreas Rheinhardt
> Sent: Sunday, June 12, 2022 7:28 AM
> To: ffmpeg-devel at ffmpeg.org
> Cc: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> Subject: [FFmpeg-devel] [PATCH] all: Replace if (ARCH_FOO) checks by
> #if ARCH_FOO
> 
> This is more spec-compliant because it does not rely
> on dead-code elimination by the compiler. Especially
> MSVC has problems with this, as can be seen in
> https://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/296373.html
> or
> https://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/297022.html
> 
> This commit does not eliminate every instance where we rely
> on the dead code elimination: It only tackles branching to
> the initialization of arch-specific dsp code, not e.g. all
> uses of CONFIG_ and HAVE_ checks. But maybe it is already
> enough to compile FFmpeg with MSVC with whole-programm-optimizations
> enabled (if one does not disable too many components).
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---

LGTM.

It's not really a story as simple as "poor MSVC is unable
to perform dead-code-elimination". It is actually capable to do that,
but the ffmpeg code was not only requiring the compiler to eliminate 
dead code, it actually required a compiler to ignore dead code blocks
even when those would contain invalid code that cannot be compiled
at all.
Besides that, DCE is not always useful. Especially during development
you might want to see the full impact of code changes, even on those 
parts which are "dead" according to your working configuration.

This will also provide advantages for the use of linting or other 
kinds of code analysis and assistance tools, to get better and more 
accurate analysis results.

Eventually, it will make it easier to switch between different branches 
or HEAD commits without needing to re-generate a new project setup
on every small change. 

Thanks for working on this patch, much appreciated!
softworkz








More information about the ffmpeg-devel mailing list