Skip to content

Commit 8576916

Browse files
Enable MCCAS by default in clang-cache
Enable MCCAS in clang-cache by default, disable it if environment variable DISABLE_MCCAS is set or a remote cache is used. (cherry picked from commit 124ddd0)
1 parent c7c963a commit 8576916

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

clang/test/CAS/driver-cache-launcher.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,40 @@
4545
// PLUGIN: "-fcas-plugin-option" "some-opt=value"
4646
// PLUGIN: "-fcas-plugin-option" "opt2=val2"
4747

48+
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas \
49+
// RUN: %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=ENABLE-MCCAS -DPREFIX=%t
50+
// ENABLE-MCCAS: "-fcas-path" "[[PREFIX]]/cas"
51+
// ENABLE-MCCAS: "-fcas-backend"
52+
// ENABLE-MCCAS: "-mllvm"
53+
// ENABLE-MCCAS: "-cas-friendly-debug-info"
54+
55+
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas CLANG_CACHE_VERIFY_MCCAS=1 \
56+
// RUN: %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=ENABLE-MCCAS-VERIFY -DPREFIX=%t
57+
// ENABLE-MCCAS-VERIFY: "-fcas-path" "[[PREFIX]]/cas"
58+
// ENABLE-MCCAS-VERIFY: "-fcas-backend"
59+
// ENABLE-MCCAS-VERIFY: "-fcas-backend-mode=verify"
60+
// ENABLE-MCCAS-VERIFY: "-mllvm"
61+
// ENABLE-MCCAS-VERIFY: "-cas-friendly-debug-info"
62+
63+
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas CLANG_CACHE_DISABLE_MCCAS=1 \
64+
// RUN: %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=DISABLE-MCCAS -DPREFIX=%t
65+
66+
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas LLVM_CACHE_REMOTE_SERVICE_SOCKET_PATH=%t/ccremote \
67+
// RUN: %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=DISABLE-MCCAS -DPREFIX=%t
68+
69+
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas LLVM_CACHE_REMOTE_SERVICE_SOCKET_PATH=%t/ccremote CLANG_CACHE_DISABLE_MCCAS=1 \
70+
// RUN: %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=DISABLE-MCCAS -DPREFIX=%t
71+
72+
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas LLVM_CACHE_REMOTE_SERVICE_SOCKET_PATH=%t/ccremote CLANG_CACHE_DISABLE_MCCAS=1 CLANG_CACHE_VERIFY_MCCAS=1 \
73+
// RUN: %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=DISABLE-MCCAS -DPREFIX=%t
74+
75+
// DISABLE-MCCAS-NOT: "-fcas-backend"
76+
// DISABLE-MCCAS-NOT: "-fcas-backend-mode=verify"
77+
// DISABLE-MCCAS-NOT: "-mllvm"
78+
// DISABLE-MCCAS-NOT: "-cas-friendly-debug-info"
79+
80+
81+
4882
// RUN: env LLVM_CACHE_CAS_PATH=%t/cas LLVM_CACHE_REMOTE_SERVICE_SOCKET_PATH=%t/ccremote %clang-cache %clang -c %s -o %t.o -### 2>&1 | FileCheck %s -check-prefix=REMOTE -DPREFIX=%t
4983
// REMOTE: "-fcompilation-caching-service-path" "[[PREFIX]]/ccremote"
5084

clang/tools/driver/CacheLauncherMode.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ static void addCommonArgs(bool ForDriver, SmallVectorImpl<const char *> &Args,
125125
/// Arguments specific to \p clang-cache compiler launcher functionality.
126126
static void addLauncherArgs(SmallVectorImpl<const char *> &Args,
127127
llvm::StringSaver &Saver) {
128+
128129
if (const char *DaemonPath =
129130
::getenv("CLANG_CACHE_SCAN_DAEMON_SOCKET_PATH")) {
130131
// Instruct clang to connect to scanning daemon that is listening on the
@@ -162,12 +163,26 @@ static void addLauncherArgs(SmallVectorImpl<const char *> &Args,
162163
Args.push_back(Saver.save("-fdepscan-prefix-map=" + PrefixMap).data());
163164
}
164165
}
165-
if (const char *ServicePath =
166-
::getenv("LLVM_CACHE_REMOTE_SERVICE_SOCKET_PATH")) {
166+
167+
const char *ServicePath = ::getenv("LLVM_CACHE_REMOTE_SERVICE_SOCKET_PATH");
168+
169+
if (ServicePath) {
167170
Args.append({"-Xclang", "-fcompilation-caching-service-path", "-Xclang",
168171
ServicePath});
169172
}
170173
Args.append({"-greproducible"});
174+
175+
if (!llvm::sys::Process::GetEnv("CLANG_CACHE_DISABLE_MCCAS") &&
176+
!ServicePath) {
177+
Args.push_back("-Xclang");
178+
Args.push_back("-fcas-backend");
179+
if (llvm::sys::Process::GetEnv("CLANG_CACHE_VERIFY_MCCAS")) {
180+
Args.push_back("-Xclang");
181+
Args.push_back("-fcas-backend-mode=verify");
182+
}
183+
Args.push_back("-mllvm");
184+
Args.push_back("-cas-friendly-debug-info");
185+
}
171186
}
172187

173188
static void addScanServerArgs(const char *SocketPath,

0 commit comments

Comments
 (0)