From 62da3c4bd49354646f31a18e74c0f26a088c5711 Mon Sep 17 00:00:00 2001 From: Chris Bieneman <beanz@apple.com> Date: Tue, 22 Mar 2016 02:55:40 +0000 Subject: [PATCH] [Perf-training] Fixing an issue with multi-threading PGO generation When LIT parallelizes the profraw file generation we need to generate unique temp filenames then clean them up after the driver executes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264021 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/perf-training/perf-helper.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/perf-training/perf-helper.py b/utils/perf-training/perf-helper.py index 19f3819b301..3fd1c0bb7c9 100644 --- a/utils/perf-training/perf-helper.py +++ b/utils/perf-training/perf-helper.py @@ -16,6 +16,7 @@ import argparse import time import bisect import shlex +import tempfile test_env = { 'PATH' : os.environ['PATH'] } @@ -149,10 +150,12 @@ def cc1(args): # clear the profile file env, so that we don't generate profdata # when capturing the cc1 command + handle, profraw_file = tempfile.mkstemp() + os.close(handle) cc1_env = test_env - cc1_env["LLVM_PROFILE_FILE"] = "driver.prfraw" + cc1_env["LLVM_PROFILE_FILE"] = profraw_file cc1_cmd = get_cc1_command_for_args(cmd, cc1_env) - os.remove("driver.prfraw") + os.remove(profraw_file) subprocess.check_call(cc1_cmd) return 0; -- GitLab