Skip to content

Commit 6916eb7

Browse files
authored
Use same toolchain throughout pgo+bolt build (#55460)
Also, I added the pgo flags to the `finish_stage2` target in case they are or become useful there.
1 parent 015c2cb commit 6916eb7

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

contrib/pgo-lto-bolt/Makefile

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ TOOLCHAIN_FLAGS = $\
8383
"RANLIB=$(STAGE0_TOOLS)llvm-ranlib" $\
8484
"CFLAGS+=$(PGO_CFLAGS)" $\
8585
"CXXFLAGS+=$(PGO_CXXFLAGS)" $\
86-
"LDFLAGS+=$(PGO_LDFLAGS)"
86+
"LDFLAGS+=-fuse-ld=lld $(PGO_LDFLAGS)"
8787

8888
$(STAGE0_BUILD) $(STAGE1_BUILD) $(STAGE2_BUILD):
8989
$(MAKE) -C $(JULIA_ROOT) O=$@ configure
@@ -99,15 +99,15 @@ stage0: | $(STAGE0_BUILD)
9999
$(STAGE1_BUILD): stage0
100100
stage1: PGO_CFLAGS:=-fprofile-generate=$(PGO_PROFILE_DIR) -Xclang -mllvm -Xclang -vp-counters-per-site=$(COUNTERS_PER_SITE)
101101
stage1: PGO_CXXFLAGS:=-fprofile-generate=$(PGO_PROFILE_DIR) -Xclang -mllvm -Xclang -vp-counters-per-site=$(COUNTERS_PER_SITE)
102-
stage1: PGO_LDFLAGS:=-fuse-ld=lld -flto=thin -fprofile-generate=$(PGO_PROFILE_DIR)
102+
stage1: PGO_LDFLAGS:=-flto=thin -fprofile-generate=$(PGO_PROFILE_DIR)
103103
stage1: export USE_BINARYBUILDER_LLVM=0
104104
stage1: | $(STAGE1_BUILD)
105105
$(MAKE) -C $(STAGE1_BUILD) $(TOOLCHAIN_FLAGS) && touch $@
106106
@echo $(AFTER_STAGE1_MESSAGE)
107107

108108
stage2: PGO_CFLAGS:=-fprofile-use=$(PGO_PROFILE_FILE)
109109
stage2: PGO_CXXFLAGS:=-fprofile-use=$(PGO_PROFILE_FILE)
110-
stage2: PGO_LDFLAGS:=-fuse-ld=lld -flto=thin -fprofile-use=$(PGO_PROFILE_FILE) -Wl,--icf=safe
110+
stage2: PGO_LDFLAGS:=-flto=thin -fprofile-use=$(PGO_PROFILE_FILE) -Wl,--icf=safe
111111
stage2: export USE_BINARYBUILDER_LLVM=0
112112
stage2: $(PGO_PROFILE_FILE) | $(STAGE2_BUILD)
113113
$(MAKE) -C $(STAGE2_BUILD) $(TOOLCHAIN_FLAGS) $(BOLT_FLAGS) julia-src-release julia-symlink julia-libccalltest \
@@ -135,10 +135,13 @@ bolt_instrument: copy_originals
135135

136136
# We don't want to rebuild julia-src as then we lose the bolt instrumentation
137137
# So we have to manually build the sysimage and package image
138+
finish_stage2: PGO_CFLAGS:=-fprofile-use=$(PGO_PROFILE_FILE)
139+
finish_stage2: PGO_CXXFLAGS:=-fprofile-use=$(PGO_PROFILE_FILE)
140+
finish_stage2: PGO_LDFLAGS:=-flto=thin -fprofile-use=$(PGO_PROFILE_FILE) -Wl,--icf=safe
138141
finish_stage2: stage2
139-
$(MAKE) -C $(STAGE2_BUILD) julia-base-cache && \
140-
$(MAKE) -C $(STAGE2_BUILD) -f sysimage.mk sysimg-release && \
141-
$(MAKE) -C $(STAGE2_BUILD) -f pkgimage.mk release
142+
$(MAKE) -C $(STAGE2_BUILD) $(TOOLCHAIN_FLAGS) julia-base-cache && \
143+
$(MAKE) -C $(STAGE2_BUILD) $(TOOLCHAIN_FLAGS) -f sysimage.mk sysimg-release && \
144+
$(MAKE) -C $(STAGE2_BUILD) $(TOOLCHAIN_FLAGS) -f pkgimage.mk release
142145

143146
merge_data: bolt_instrument
144147
for file in $(FILES_TO_OPTIMIZE); do \

0 commit comments

Comments
 (0)