On 08/08/2013 01:43 PM, Eric Anholt wrote:
We can't just smash it on globally due to (probably resolvable) issues
with the asm in glapi. And we don't want to penalize developers with
longer build times for their normal debug environment.
Due to libdricore making almost all of our symbols public, the effect is
very small -- cairo-gl with INTEL_NO_HW=1 shows -0.798709% +/- 0.333703%
change in runtime (n=30).
---
If we were to avoid dricore, there's an additional 5% improvement available
(see the "megadriver" branch of my tree).
configure.ac | 25 +++++++++++++++++++++++++
src/mesa/Makefile.am | 4 ++--
src/mesa/drivers/dri/i965/Makefile.am | 1 +
src/mesa/libdricore/Makefile.am | 8 +++++++-
src/mesa/program/Makefile.am | 4 ++--
5 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index 62d06e0..26c230d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -314,6 +314,7 @@ AC_ARG_ENABLE([debug],
[enable_debug="$enableval"],
[enable_debug=no]
)
+enable_lto=yes
if test "x$enable_debug" = xyes; then
DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DDEBUG"
if test "x$GCC_FOR_BUILD" = xyes; then
@@ -330,7 +331,31 @@ if test "x$enable_debug" = xyes; then
if test "x$GXX" = xyes; then
CXXFLAGS="$CXXFLAGS -g -O0"
fi
+
+ # Disable LTO by default on debug builds, since it's so expensive at
+ # compile time.
+ enable_lto=no
+fi
I'd like to emit a configuration error if someone tries to enable LTO
in a debug build. According the gcc-4.8 manpage, that's a really bad
idea.
Link-time optimization does not work well with generation of
debugging information. Combining -flto with -g is currently
experimental and expected to produce wrong results.
Other than that, the patch looks good to me.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev