[FFmpeg-devel] Moving if(constant expression) to preprocessor?

Måns Rullgård mans
Sun Sep 19 19:08:00 CEST 2010


"Axel Holzinger" <aholzinger at gmx.de> writes:

> Hi Bobby,
> Bobby Bingham wrote:
>> On Sat, 18 Sep 2010 18:00:40 +0200
>> "Axel Holzinger" <aholzinger at gmx.de> wrote:
>> 
>> > Hi M?ns and all,
>> > 
>> > M?ns Rullg?rd wrote:
>> > > "Axel Holzinger" <aholzinger at gmx.de> writes:
>> > > 
>> > > > Hi all,
>> > > >
>> > > > if compiling FFmpeg code with zero optimisations (even without dead
>> > > > code elimination) there are linker errors (undefined references to
>> > 
>> > > > functions or structs) that come from constructs like i.e. the 
>> > > > following in libavcodec/allcodecs.c:
>> > > >
>> > > > if(CONFIG_##X##_HWACCEL) av_register_hwaccel(&x##_hwaccel); }
>> > > >
>> > > > The runtime (lower case) "if" leads to an undefined reference, because
>> > > > it is evaluated at runtime and not at compile time.
>> > > >
>> > > > If dead code eliminitation optimisation is on, this isn't an issue,
>> > > > but with optimisations completely off it is.
>> > > 
>> > > Don't do that then.
>> > 
>> > Hehe, if we all would be so shy, we would still live in caves, 
>> > wouldn't we :-)
>> > 
>> 
>> Why do you want to compile without dead code elimination?
>
> I don't want to compile without dead code elimination.
> I want to compile witout optimisation.

Why?

> Why shouldn't I?

Because without optimisation, the code will be unusably slow.

> The solution I have presented is adding a couple of macros, nothing
> else. No code, just macros, with the benefit of being able to
> conditionally include/exclude code. A very nice and handy feature,
> useful for all kinds of things. As you can see in the post before,
> even valid to beu used inside macros.
>
>> I don't see what the benefit is.
>
> Just one example, debugging unoptimised code.

Why would you want to debug unoptimised code?

> What is the benefit of optimisation in a debug build?

What is the benefit of debugging code you do not intend to use?

>> And without a compelling reason, I don't think it's worth
>
> Do you restrict yourself without a compelling reason?

I could ask you the same question.

>> obfuscating the code.
>
> The codes is NOT obfuscated. Where do you get this impression from.

It took you several attempts to produce something that appears to be
syntactically correct, and even then it takes a while to trace through
the macros to see what it does.  That is obfuscated.

> Using a const expression in a runtime if is obfuscation

Code is obfuscated when it is not obvious at a glance what it does.
If you find it hard to understand what
   if (CONFIG_FOO) do_something();
does, you should probably consider a career not involving programming.

> and besides it's plain bad style.

Matter of opinion.  You have made yours clear, as have we ours.  We
happen be the ones making the rules here, not you.

> Relying on dead code elimination for making a build succeed is a hack.

Is relying on the optimisation to make the code fast enough also a hack?

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list