|
From: <sv...@va...> - 2011-09-29 17:34:39
|
Author: sewardj Date: 2011-09-29 18:29:53 +0100 (Thu, 29 Sep 2011) New Revision: 12065 Log: Compile everything with -fno-builtin, so as to disable LLVM's idiom-recognition optimisation. This identifies memset-style loops and turns them into calls to memset, which in this case leads to infinite recursion because it does this transformations in VG_(memset), which is called from memset(), which we also define. Modified: trunk/Makefile.all.am Modified: trunk/Makefile.all.am =================================================================== --- trunk/Makefile.all.am 2011-09-29 14:26:38 UTC (rev 12064) +++ trunk/Makefile.all.am 2011-09-29 17:29:53 UTC (rev 12065) @@ -80,6 +80,8 @@ # Baseline flags for all compilations. Aim here is to maximise # performance and get whatever useful warnings we can out of gcc. +# -fno-builtin is important for defeating LLVM's idiom recognition +# that somehow causes VG_(memset) to get into infinite recursion. AM_CFLAGS_BASE = \ -O2 -g \ -Wall \ @@ -89,7 +91,8 @@ -Wstrict-prototypes \ -Wmissing-declarations \ @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \ - -fno-strict-aliasing + -fno-strict-aliasing \ + -fno-builtin # These flags are used for building the preload shared objects. # The aim is to give reasonable performance but also to have good @@ -97,9 +100,11 @@ # into (and through) the preloads. if VGCONF_OS_IS_DARWIN AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ - -mno-dynamic-no-pic -fpic -fPIC + -mno-dynamic-no-pic -fpic -fPIC \ + -fno-builtin else -AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing +AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ + -fno-builtin endif |