about summary refs log tree commit diff
path: root/Makefile
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-09-14 23:38:10 -0400
committerRich Felker <dalias@aerifal.cx>2012-09-14 23:38:10 -0400
commit9f74574fe697f0908d766579e73d94fc621463d4 (patch)
tree83dcf242611598873066366e9469243f655b5ab7 /Makefile
parentd62f4e98881702f07501b965e5beebd7516deca2 (diff)
downloadmusl-9f74574fe697f0908d766579e73d94fc621463d4.tar.gz
musl-9f74574fe697f0908d766579e73d94fc621463d4.tar.xz
musl-9f74574fe697f0908d766579e73d94fc621463d4.zip
remove forced -O3 from shared library CFLAGS
I originally added -O3 for shared libraries to counteract very bad
behavior by GCC when building PIC code: it insists on reloading the
GOT register in static functions that need it, even if the address of
the function is never leaked from the translation unit and all local
callers of the function have already loaded the GOT register. this
measurably degrades performance in a few key areas like malloc. the
inlining done at -O3 avoids the issue, but that's really not a good
reason for overriding the user's choice of optimization level.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile2
1 files changed, 1 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 21a2c8d6..10c174ce 100644
--- a/Makefile
+++ b/Makefile
@@ -32,7 +32,7 @@ CFLAGS_ALL = $(CFLAGS_C99FSE)
 CFLAGS_ALL += -D_XOPEN_SOURCE=700 -I./arch/$(ARCH) -I./src/internal -I./include
 CFLAGS_ALL += $(CPPFLAGS) $(CFLAGS)
 CFLAGS_ALL_STATIC = $(CFLAGS_ALL)
-CFLAGS_ALL_SHARED = $(CFLAGS_ALL) -fPIC -DSHARED -O3
+CFLAGS_ALL_SHARED = $(CFLAGS_ALL) -fPIC -DSHARED
 
 AR      = $(CROSS_COMPILE)ar
 RANLIB  = $(CROSS_COMPILE)ranlib