@cryptotaxi247 / netdata-1 / commits / cdf6740f4

enable link-time-optimizations by default

Costa Tsaousis (ktsaou) committed Mar 11, 2017 at 23:53 UTC cdf6740f46999b1b15665feb9eea7593c0aafc3c
3 files changed +44 -2
configure.ac
+24 -1
@@ -101,6 +101,12 @@ AC_ARG_ENABLE(
101 ,
102 [enable_x86_sse="yes"]
103 )
104 +AC_ARG_ENABLE(
105 + [lto],
106 + [AS_HELP_STRING([--disable-lto], [Link Time Optimizations @<:@default enabled@:>@])],
107 + ,
108 + [enable_lto="detect"]
109 +)
110
111
112 # -----------------------------------------------------------------------------
@@ -145,6 +151,7 @@ AC_CHECK_HEADERS_ONCE([sys/prctl.h])
151 # -----------------------------------------------------------------------------
152 # operating system detection
153
154 +AC_MSG_CHECKING([operating system])
155 case "$host_os" in
156 freebsd*)
157 build_target=freebsd
@@ -161,6 +168,7 @@ esac
168 AM_CONDITIONAL([FREEBSD], [test "${build_target}" = "freebsd"])
169 AM_CONDITIONAL([MACOS], [test "${build_target}" = "macos"])
170 AM_CONDITIONAL([LINUX], [test "${build_target}" = "linux"])
171 +AC_MSG_RESULT([${build_target}])
172
173
174 # -----------------------------------------------------------------------------
@@ -173,8 +181,23 @@ AS_CASE([$host_cpu],
181 AC_SUBST([SSE_CANDIDATE])
182 if test "${SSE_CANDIDATE}" = "yes" -a "${enable_x86_sse}" = "yes"; then
183 opt="-msse2 -mfpmath=sse"
176 - AX_CHECK_COMPILE_FLAG($opt, [CFLAGS="$CFLAGS $opt"], [])
184 + AX_CHECK_COMPILE_FLAG(${opt}, [CFLAGS="${CFLAGS} ${opt}"], [])
185 +fi
186 +
187 +if test "${enable_lto}" != "no"; then
188 + opt="-flto"
189 + AX_CHECK_COMPILE_FLAG(${opt}, [have_lto=yes], [have_lto=no])
190 +fi
191 +test "${enable_lto}" = "yes" -a "${have_lto}" != "yes" && \
192 + AC_MSG_ERROR([LTO is required but is not available.])
193 +AC_MSG_CHECKING([if LTO should be enabled])
194 +if test "${enable_lto}" != "no" -a "${have_lto}" = "yes"; then
195 + enable_lto="yes"
196 + CFLAGS="${CFLAGS} -flto"
197 +else
198 + enable_lto="no"
199 fi
200 +AC_MSG_RESULT([${enable_lto}])
201
202 if test "${GCC}" = "yes"; then
203 AC_DEFINE_UNQUOTED([likely(x)], [__builtin_expect(!!(x), 1)], [gcc branch optimization])
netdata-installer.sh
+14
@@ -104,6 +104,12 @@ Valid <installer options> are:
104 Enable/disable the FreeIPMI plugin.
105 Default: enable it when libipmimonitoring is available.
106
107 + --enable-lto
108 + --disable-lto
109 +
110 + Enable/disable Link-Time-Optimization
111 + Default: enabled
112 +
113 --zlib-is-really-here
114 --libs-are-really-here
115
@@ -199,6 +205,14 @@ do
205 then
206 NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --disable-plugin-freeipmi"
207 shift 1
208 + elif [ "$1" = "--enable-lto" ]
209 + then
210 + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --enable-lto"
211 + shift 1
212 + elif [ "$1" = "--disable-lto" ]
213 + then
214 + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --disable-lto"
215 + shift 1
216 elif [ "$1" = "--help" -o "$1" = "-h" ]
217 then
218 usage
src/clocks.c
+6 -1
@@ -27,8 +27,13 @@ static inline usec_t now_usec(clockid_t clk_id) {
27
28 static inline int now_timeval(clockid_t clk_id, struct timeval *tv) {
29 struct timespec ts;
30 - if(unlikely(clock_gettime(clk_id, &ts) == -1))
30 +
31 + if(unlikely(clock_gettime(clk_id, &ts) == -1)) {
32 + tv->tv_sec = 0;
33 + tv->tv_usec = 0;
34 return -1;
35 + }
36 +
37 tv->tv_sec = ts.tv_sec;
38 tv->tv_usec = (suseconds_t)((ts.tv_nsec % NSEC_PER_SEC) / NSEC_PER_USEC);
39 return 0;