From: Chris Lattner Date: Wed, 18 Feb 2009 04:02:00 +0000 (+0000) Subject: Optimize dyld startup time by specifying a trivial export map X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d1dd229eda73a3099bed69e72712cae38c3ca1b0;p=clang Optimize dyld startup time by specifying a trivial export map (only export main) on the mac. This improves DYLD_PRINT_STATISTICS from: total time: 6.0 milliseconds (100.0%) total images loaded: 5 (4 from dyld shared cache, 3 needed no fixups) total segments mapped: 0, into 0 pages with 0 pages pre-fetched total images loading time: 0.0 milliseconds (1.4%) total rebase fixups: 0 total rebase fixups time: 0.0 milliseconds (0.0%) total binding fixups: 7,928 total binding symbol lookups: 4,087, average images searched per symbol: 1.9 total binding fixups time: 4.7 milliseconds (79.2%) total bindings lazily fixed up: 170 of 4,372 total init time time: 1.1 milliseconds (19.2%) total images with weak exports: 2 to: total time: 1.4 milliseconds (100.0%) total images loaded: 5 (4 from dyld shared cache, 4 needed no fixups) total segments mapped: 0, into 0 pages with 0 pages pre-fetched total images loading time: 0.0 milliseconds (5.7%) total rebase fixups: 0 total rebase fixups time: 0.0 milliseconds (0.2%) total binding fixups: 1,079 total binding symbol lookups: 75, average images searched per symbol: 1.0 total binding fixups time: 0.5 milliseconds (33.9%) total bindings lazily fixed up: 14 of 216 total init time time: 0.8 milliseconds (60.0%) total images with weak exports: 1 This reduces the time to -fsyntax-only cocoa.h with PTH from 0.192s to 0.184 (4.3%) rdar://6505315 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64882 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/Makefile b/Driver/Makefile index 22d7ffbfb5..d4b939052c 100644 --- a/Driver/Makefile +++ b/Driver/Makefile @@ -8,6 +8,12 @@ CXXFLAGS = -fno-rtti # early so we can set up LINK_COMPONENTS before including Makefile.rules include $(LEVEL)/Makefile.config +# Optimize startup time of the app by not exporting all of the weak symbols +# from the binary. This reduces dyld startup time by 4x. +ifeq ($(OS),Darwin) +LD.Flags += -Wl,-exported_symbol -Wl,_main +endif + LINK_COMPONENTS := $(TARGETS_TO_BUILD) bitreader bitwriter codegen ipo selectiondag USEDLIBS = clangCodeGen.a clangAnalysis.a clangRewrite.a clangSema.a \ clangDriver.a clangAST.a clangParse.a clangLex.a \