There is a bug in GCC LTO such that it ignores assembler directives.
This patch makes LTO enabled by default but also allows it to be disabled
if required.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47785

Ray Kinsella
---
 configure.ac | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index 999f9f8..294c440 100644
--- a/configure.ac
+++ b/configure.ac
@@ -194,11 +194,18 @@ AS_CASE([$CC], [*clang*],
                -Wno-gnu-variable-sized-type-not-at-end \
         ])])
 
-AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
-        [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
-               -flto -ffat-lto-objects])],
-        [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
-AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
+AC_ARG_ENABLE(lto,
+        [AS_HELP_STRING([--enable-lto], [Enable link time optimization])],
+               enable_lto=$enableval,
+               enable_lto=yes; default_enable_lto=yes)
+
+if test "x$enable_lto" != "xno"; then
+        AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
+                [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
+                    -flto -ffat-lto-objects])],
+                [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
+        AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
+fi
 
 AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
         [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
-- 
2.1.0

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to