[FFmpeg-devel] CONFIG_W64_DEMUXER and dead-code elimination
Reimar.Doeffinger at gmx.de
Sat Apr 23 14:52:12 CEST 2016
On 23.04.2016, at 13:21, wm4 <nfxjfg at googlemail.com> wrote:
> On Sat, 23 Apr 2016 01:16:31 +0200
> Hendrik Leppkes <h.leppkes at gmail.com> wrote:
>> On Sat, Apr 23, 2016 at 1:02 AM, Bruce Dawson
>> <brucedawson-at-google.com at ffmpeg.org> wrote:
>>> I've noticed that when CONFIG_W64_DEMUXER is defined to zero that ffmpeg
>>> compiles in a reference to ff_w64_guid_data but doesn't not link w64.o
>>> (which defines that symbol).
>>> This normally works because most optimizers discard the reference
>>> to ff_w64_guid_data early enough to not cause a linker failure. However
>>> this assumption means that /Od (debug, unoptimized) and /GL (Link Time Code
>>> Generation - super optimized) builds with VC++ don't work.
>> We require dead code elimination to be available in all build modes,
>> therefor such build settings that do not have it are not supported.
>> This is not the only place that uses this, and its a design decision
>> to rely on it, therefor we won't be accepting patches to change that
>> at this time, sorry.
> Why not? Someone just volunteered to cleanup this non-sense, so why not
> let them?
Because it ends up with a horrible ifdef mess and also means that disabled parts will not even be checked for syntax.
I.e. the reasons why we did it this way.
> We may have been arguing that every compiler supports this level of
> DCE, but experience has been clearly showing that this is not always the
> case due to various reasons.
I don't that was quite the argument. It is more a question if the rare cases are really worth the cost, especially when also the compilers could be changed to support this method of code configuration.
More information about the ffmpeg-devel