From: Soft Works <softworkz@hotmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: Re: [FFmpeg-devel] [PATCH] all: Replace if (ARCH_FOO) checks by #if ARCH_FOO
Date: Sun, 12 Jun 2022 08:17:26 +0000
Message-ID: <DM8P223MB0365BF7D14DBF1810B26381EBAA89@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <DB6PR0101MB22142FD46F765D62938F15B88FA89@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com>
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Andreas Rheinhardt
> Sent: Sunday, June 12, 2022 7:28 AM
> To: ffmpeg-devel@ffmpeg.org
> Cc: Andreas Rheinhardt <andreas.rheinhardt@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@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
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-06-12 8:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-12 5:27 Andreas Rheinhardt
2022-06-12 8:17 ` Soft Works [this message]
2022-06-12 8:32 ` Martin Storsjö
2022-06-12 8:58 ` Martin Storsjö
2022-06-12 10:28 ` Soft Works
2022-06-12 9:08 ` Hendrik Leppkes
2022-06-12 9:26 ` Soft Works
2022-06-14 14:34 ` Andreas Rheinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM8P223MB0365BF7D14DBF1810B26381EBAA89@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM \
--to=softworkz@hotmail.com \
--cc=andreas.rheinhardt@outlook.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git