2016-10-26 1:16 GMT+02:00 Andreas Cadhalpun <andreas.cadhal...@googlemail.com>: > On 25.10.2016 23:34, Carl Eugen Hoyos wrote: >> 2016-10-25 19:19 GMT+02:00 Andreas Cadhalpun >> <andreas.cadhal...@googlemail.com>: >> >>> + # LTO could optimize out the test functions without this >>> + echo "#if defined(__GNUC__) && __GNUC__ >= 4" >>> + echo " #define USED __attribute__((used))" >>> + echo "#else" >>> + echo " #define USED" >>> + echo "#endif" >> >> Why is the ugly #if - #else - #endif necessary? > > I'm under the impression that __attribute__((used)) is not available > for all compilers,
Yes, but __attribute__((foo_bar)) does not break compilation here. > see e.g. libavutil/attributes.h. This is not a good reference, you cannot test - for example - icc like this. > But thinking more about it, a better way is to actually use the functions so > that > LTO can't optimize them out. This avoids the ugly preprocessor checks. Imo, they were only ugly as long as they were enclosed in #if - #endif ;-) >> Please mention ticket #5909 if it is related. > > Sure, new patch attached. > > By the way, this is not a regression in 3.1.5, but a fix included in > that release allowed them to drop their distro-specific patch, > exposing the problem with LTO. Yes, they are adding a few unneeded flags that make FFmpeg slower and then they add lto to make compilation slower... (But it is still a regression: 3.1 should not have seen the patch, it doesn't support new incompatible external libraries, and the issue was neither a regression nor security-related.) Carl Eugen _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel