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, see e.g. libavutil/attributes.h. 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. > 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. Best regards, Andreas
>From bb289a0b2b0948afa99227bcff188301c1143624 Mon Sep 17 00:00:00 2001 From: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> Date: Tue, 25 Oct 2016 19:09:46 +0200 Subject: [PATCH] configure: make sure LTO does not optimize out the test functions Fixes trac ticket #5909 Bud-Id: https://bugs.gentoo.org/show_bug.cgi?id=598054 Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> --- configure | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 481f692..54faef1 100755 --- a/configure +++ b/configure @@ -1150,7 +1150,12 @@ check_func_headers(){ for func in $funcs; do echo "long check_$func(void) { return (long) $func; }" done - echo "int main(void) { return 0; }" + echo "int main(void) { int ret = 0;" + # LTO could optimize out the test functions without this + for func in $funcs; do + echo " ret |= ((intptr_t)check_$func) & 0xFFFF;" + done + echo "return ret; }" } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers } -- 2.9.3
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel