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

Reply via email to