40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
|
diff --git a/build/autoconf/compiler-opts.m4 b/build/autoconf/compiler-opts.m4
|
||
|
--- a/build/autoconf/compiler-opts.m4
|
||
|
+++ b/build/autoconf/compiler-opts.m4
|
||
|
@@ -173,16 +173,34 @@ AC_SUBST([LD_IS_BFD])
|
||
|
|
||
|
if test "$GNU_CC"; then
|
||
|
if test -z "$DEVELOPER_OPTIONS"; then
|
||
|
CFLAGS="$CFLAGS -ffunction-sections -fdata-sections"
|
||
|
CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections"
|
||
|
fi
|
||
|
CFLAGS="$CFLAGS -fno-math-errno"
|
||
|
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-math-errno"
|
||
|
+
|
||
|
+ if test -z "$CLANG_CC"; then
|
||
|
+ case "$CC_VERSION" in
|
||
|
+ 4.*)
|
||
|
+ ;;
|
||
|
+ *)
|
||
|
+ # Lifetime Dead Store Elimination level 2 (default in GCC6+) breaks Gecko.
|
||
|
+ # Ideally, we'd use -flifetime-dse=1, but that means we'd forcefully
|
||
|
+ # enable it on optimization levels where it would otherwise not be enabled.
|
||
|
+ # So we disable it entirely. But since that would mean inconsistency with
|
||
|
+ # GCC5, which has level 1 depending on optimization level, disable it on
|
||
|
+ # GCC5 as well, because better safe than sorry.
|
||
|
+ # Add it first so that a mozconfig can override by setting CFLAGS/CXXFLAGS.
|
||
|
+ CFLAGS="-fno-lifetime-dse $CFLAGS"
|
||
|
+ CXXFLAGS="-fno-lifetime-dse $CXXFLAGS"
|
||
|
+ ;;
|
||
|
+ esac
|
||
|
+ fi
|
||
|
fi
|
||
|
|
||
|
dnl ========================================================
|
||
|
dnl = Identical Code Folding
|
||
|
dnl ========================================================
|
||
|
|
||
|
MOZ_ARG_DISABLE_BOOL(icf,
|
||
|
[ --disable-icf Disable Identical Code Folding],
|
||
|
|