Skip to content

Commit

Permalink
Bug 1341525: Enable PGO in 64-bit clang-cl builds. r=froydnj
Browse files Browse the repository at this point in the history
  • Loading branch information
David Major committed Aug 1, 2018
1 parent 29b9211 commit 45083c4
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
4 changes: 4 additions & 0 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,10 @@ endif
else
ifdef CLANG_CL
maybe_clobber_profiledbuild: clean
# 32-bit PGO is currently blocked by bug 1479800
ifeq ($(CPU_ARCH),x86_64)
$(LLVM_PROFDATA) merge -o $(DEPTH)/merged.profdata $(DEPTH)/*.profraw
endif
else
maybe_clobber_profiledbuild:
$(RM) $(DIST)/bin/*.pgc
Expand Down
25 changes: 23 additions & 2 deletions build/moz.configure/toolchain.configure
Original file line number Diff line number Diff line change
Expand Up @@ -1240,10 +1240,14 @@ set_config('WRAP_SYSTEM_INCLUDES', wrap_system_includes)
set_config('VISIBILITY_FLAGS', visibility_flags)


@depends(c_compiler)
@depends(c_compiler, check_build_environment, target)
@imports('multiprocessing')
@imports(_from='__builtin__', _import='min')
def pgo_flags(compiler):
def pgo_flags(compiler, build_env, target):
topobjdir = build_env.topobjdir
if topobjdir.endswith('/js/src'):
topobjdir = topobjdir[:-7]

if compiler.type in ('gcc', 'clang'):
return namespace(
gen_cflags=['-fprofile-generate'],
Expand All @@ -1253,6 +1257,18 @@ def pgo_flags(compiler):
use_ldflags=['-fprofile-use'],
)

if compiler.type == 'clang-cl':
profdata = os.path.join(topobjdir, 'merged.profdata')
# 32-bit PGO is currently blocked by bug 1479800
if target.cpu == 'x86_64':
return namespace(
gen_cflags=['-fprofile-instr-generate'],
gen_ldflags=['clang_rt.profile-x86_64.lib'],
use_cflags=['-fprofile-instr-use=%s' % profdata,
'-Wno-error=profile-instr-unprofiled'],
use_ldflags=[],
)

if compiler.type == 'msvc':
num_cores = min(8, multiprocessing.cpu_count())
cgthreads = '-CGTHREADS:%s' % num_cores
Expand Down Expand Up @@ -1282,6 +1298,11 @@ set_config('PROFILE_GEN_LDFLAGS', pgo_flags.gen_ldflags)
set_config('PROFILE_USE_CFLAGS', pgo_flags.use_cflags)
set_config('PROFILE_USE_LDFLAGS', pgo_flags.use_ldflags)

llvm_profdata = check_prog('LLVM_PROFDATA', ['llvm-profdata'],
allow_missing=True)

add_old_configure_assignment('LLVM_PROFDATA', llvm_profdata)


@depends(c_compiler)
def preprocess_option(compiler):
Expand Down
7 changes: 6 additions & 1 deletion build/mozconfig.clang-cl
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
if test -d "$topsrcdir/clang/bin"; then
CLANG_DIR=`cd "$topsrcdir/clang/bin" ; pwd`
export PATH="${CLANG_DIR}:${PATH}"

mk_export_correct_style PATH

if $(cd $topsrcdir/clang/lib/clang/* && test -d lib/windows); then
CLANG_LIB_DIR="$(cd $topsrcdir/clang/lib/clang/* && cd lib/windows && pwd)"
export LIB=$LIB:$CLANG_LIB_DIR
mk_export_correct_style LIB
fi
fi

export CC=clang-cl
Expand Down

0 comments on commit 45083c4

Please sign in to comment.