Skip to content

Commit 5278c10

Browse files
AllanZynezhaomaosukbenzie
authored andcommitted
[DeviceMSAN] Support MemorySanitizer for device offloading (#15955)
UR: oneapi-src/unified-runtime#2325 --------- Co-authored-by: Zhao, Maosu <[email protected]> Co-authored-by: Kenneth Benzie (Benie) <[email protected]>
1 parent 7e1c9ce commit 5278c10

File tree

28 files changed

+1111
-122
lines changed

28 files changed

+1111
-122
lines changed

clang/lib/Driver/OffloadBundler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ class ObjectFileHandler final : public FileHandler {
692692
if (SF->isIR() &&
693693
(Name == "llvm.used" || Name == "llvm.compiler.used" ||
694694
Name == "__AsanDeviceGlobalMetadata" ||
695-
Name == "__AsanKernelMetadata"))
695+
Name == "__AsanKernelMetadata" || Name == "__MsanKernelMetadata"))
696696
continue;
697697

698698
// Add symbol name with the target prefix to the buffer.

clang/lib/Driver/SanitizerArgs.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,7 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
11691169
// SPIR/SPIRV sanitizer support is experimental and will pass a fixed set of
11701170
// flags
11711171
if (TC.getTriple().isSPIROrSPIRV()) {
1172+
#if !defined(_WIN32)
11721173
if (Sanitizers.has(SanitizerKind::Address)) {
11731174
CmdArgs.push_back("-fsanitize=address");
11741175
CmdArgs.push_back("-fsanitize-address-use-after-return=never");
@@ -1200,7 +1201,26 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
12001201

12011202
addSpecialCaseListOpt(Args, CmdArgs,
12021203
"-fsanitize-ignorelist=", UserIgnorelistFiles);
1204+
} else if (Sanitizers.has(SanitizerKind::Memory)) {
1205+
CmdArgs.push_back("-fsanitize=memory");
1206+
1207+
CmdArgs.push_back("-mllvm");
1208+
CmdArgs.push_back("-msan-instrumentation-with-call-threshold=0");
1209+
1210+
CmdArgs.push_back("-mllvm");
1211+
CmdArgs.push_back("-msan-eager-checks=1");
12031212
}
1213+
#else // _WIN32
1214+
std::string SanitizeArg;
1215+
if (Sanitizers.has(SanitizerKind::Address))
1216+
SanitizeArg = "-fsanitize=address";
1217+
else if (Sanitizers.has(SanitizerKind::Memory))
1218+
SanitizeArg = "-fsanitize=memory";
1219+
1220+
if (!SanitizeArg.empty())
1221+
TC.getDriver().Diag(diag::warn_drv_unsupported_option_for_target)
1222+
<< SanitizeArg << TC.getTripleString();
1223+
#endif
12041224
return;
12051225
}
12061226

clang/lib/Driver/ToolChains/SYCL.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,7 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,
545545
{"libsycl-asan-cpu", "internal"},
546546
{"libsycl-asan-dg2", "internal"},
547547
{"libsycl-asan-pvc", "internal"}};
548+
const SYCLDeviceLibsList SYCLDeviceMsanLibs = {{"libsycl-msan", "internal"}};
548549
#endif
549550

550551
const SYCLDeviceLibsList SYCLNativeCpuDeviceLibs = {
@@ -659,12 +660,15 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,
659660

660661
#if !defined(_WIN32)
661662
std::string SanitizeVal;
663+
std::string SanitizeArg;
662664
size_t sanitizer_lib_idx = getSingleBuildTarget();
663665
if (Arg *A = Args.getLastArg(options::OPT_fsanitize_EQ,
664666
options::OPT_fno_sanitize_EQ)) {
665667
if (A->getOption().matches(options::OPT_fsanitize_EQ) &&
666-
A->getValues().size() == 1)
668+
A->getValues().size() == 1) {
667669
SanitizeVal = A->getValue();
670+
SanitizeArg = A->getAsString(Args);
671+
}
668672
} else {
669673
// User can pass -fsanitize=address to device compiler via
670674
// -Xsycl-target-frontend, sanitize device library must be
@@ -688,14 +692,21 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,
688692
for (const std::string &Arg : ArgVals) {
689693
if (Arg.find("-fsanitize=address") != std::string::npos) {
690694
SanitizeVal = "address";
695+
SanitizeArg = Arg;
696+
break;
697+
}
698+
if (Arg.find("-fsanitize=memory") != std::string::npos) {
699+
SanitizeVal = "memory";
700+
SanitizeArg = Arg;
691701
break;
692702
}
693703
}
694704
}
695705

696706
if (SanitizeVal == "address")
697707
addSingleLibrary(SYCLDeviceAsanLibs[sanitizer_lib_idx]);
698-
708+
else if (SanitizeVal == "memory")
709+
addLibraries(SYCLDeviceMsanLibs);
699710
#endif
700711

701712
if (isNativeCPU)
@@ -815,6 +826,7 @@ static llvm::SmallVector<StringRef, 16> SYCLDeviceLibList{
815826
"asan-pvc",
816827
"asan-cpu",
817828
"asan-dg2",
829+
"msan",
818830
#endif
819831
"imf",
820832
"imf-fp64",
@@ -1630,11 +1642,11 @@ SYCLToolChain::SYCLToolChain(const Driver &D, const llvm::Triple &Triple,
16301642
for (OptSpecifier Opt : getUnsupportedOpts()) {
16311643
if (const Arg *A = Args.getLastArg(Opt)) {
16321644
// All sanitizer options are not currently supported, except
1633-
// AddressSanitizer
1645+
// AddressSanitizer and MemorySanitizer
16341646
if (A->getOption().getID() == options::OPT_fsanitize_EQ &&
16351647
A->getValues().size() == 1) {
16361648
std::string SanitizeVal = A->getValue();
1637-
if (SanitizeVal == "address")
1649+
if (SanitizeVal == "address" || SanitizeVal == "memory")
16381650
continue;
16391651
}
16401652
D.Diag(clang::diag::warn_drv_unsupported_option_for_target)
@@ -1672,7 +1684,7 @@ SYCLToolChain::TranslateArgs(const llvm::opt::DerivedArgList &Args,
16721684
if (Opt.getID() == options::OPT_fsanitize_EQ &&
16731685
A->getValues().size() == 1) {
16741686
std::string SanitizeVal = A->getValue();
1675-
if (SanitizeVal == "address") {
1687+
if (SanitizeVal == "address" || SanitizeVal == "memory") {
16761688
if (IsNewDAL)
16771689
DAL->append(A);
16781690
continue;
@@ -2081,5 +2093,5 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args,
20812093
}
20822094

20832095
SanitizerMask SYCLToolChain::getSupportedSanitizers() const {
2084-
return SanitizerKind::Address;
2096+
return SanitizerKind::Address | SanitizerKind::Memory;
20852097
}

clang/test/Driver/sycl-device-lib-old-model.cpp

Lines changed: 61 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -198,35 +198,35 @@
198198
/// ###########################################################################
199199
/// test behavior of libsycl-asan.bc linking when -fsanitize=address is available
200200
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -fsanitize=address -### 2>&1 \
201-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
201+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
202202
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend -fsanitize=address -### 2>&1 \
203-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
203+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
204204
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend=spir64 -fsanitize=address -### 2>&1 \
205-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
205+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
206206
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=address -### 2>&1 \
207-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
207+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
208208
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \
209-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
209+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
210210
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \
211211
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_ASAN_MACRO
212-
// SYCL_DEVICE_LIB_SANITIZER: llvm-link{{.*}} "{{.*}}libsycl-crt.bc"
213-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-complex.bc"
214-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-complex-fp64.bc"
215-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-cmath.bc"
216-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-cmath-fp64.bc"
217-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-imf.bc"
218-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-imf-fp64.bc"
219-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-imf-bf16.bc"
220-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-cassert.bc"
221-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-cstring.bc"
222-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-complex.bc"
223-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
224-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-cmath.bc"
225-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
226-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-imf.bc"
227-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
228-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
229-
// SYCL_DEVICE_LIB_SANITIZER-SAME: "{{.*}}libsycl-asan.bc"
212+
// SYCL_DEVICE_LIB_ASAN: llvm-link{{.*}} "{{.*}}libsycl-crt.bc"
213+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-complex.bc"
214+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-complex-fp64.bc"
215+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-cmath.bc"
216+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-cmath-fp64.bc"
217+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-imf.bc"
218+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-imf-fp64.bc"
219+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-imf-bf16.bc"
220+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cassert.bc"
221+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cstring.bc"
222+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-complex.bc"
223+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
224+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cmath.bc"
225+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
226+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-imf.bc"
227+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
228+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
229+
// SYCL_DEVICE_LIB_ASAN-SAME: "{{.*}}libsycl-asan.bc"
230230
// SYCL_DEVICE_ASAN_MACRO: "-cc1"
231231
// SYCL_DEVICE_ASAN_MACRO-SAME: "USE_SYCL_DEVICE_ASAN"
232232
// SYCL_DEVICE_ASAN_MACRO: llvm-link{{.*}} "-only-needed"
@@ -317,3 +317,41 @@
317317
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
318318
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
319319
// SYCL_DEVICE_LIB_ASAN_DG2-SAME: "{{.*}}libsycl-asan-dg2.bc"
320+
321+
322+
/// ###########################################################################
323+
/// test behavior of libsycl-msan.bc linking when -fsanitize=memory is available
324+
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -fsanitize=memory -### 2>&1 \
325+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
326+
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend -fsanitize=memory -### 2>&1 \
327+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
328+
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend=spir64 -fsanitize=memory -### 2>&1 \
329+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
330+
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=memory -### 2>&1 \
331+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
332+
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \
333+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
334+
// RUN: %clangxx -fsycl --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \
335+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_MSAN_MACRO
336+
// SYCL_DEVICE_LIB_MSAN: llvm-link{{.*}} "{{.*}}libsycl-crt.bc"
337+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-complex.bc"
338+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-complex-fp64.bc"
339+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-cmath.bc"
340+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-cmath-fp64.bc"
341+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-imf.bc"
342+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-imf-fp64.bc"
343+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-imf-bf16.bc"
344+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cassert.bc"
345+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cstring.bc"
346+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-complex.bc"
347+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-complex-fp64.bc"
348+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cmath.bc"
349+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-cmath-fp64.bc"
350+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-imf.bc"
351+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-imf-fp64.bc"
352+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-fallback-imf-bf16.bc"
353+
// SYCL_DEVICE_LIB_MSAN-SAME: "{{.*}}libsycl-msan.bc"
354+
// SYCL_DEVICE_MSAN_MACRO: "-cc1"
355+
// SYCL_DEVICE_MSAN_MACRO-SAME: "USE_SYCL_DEVICE_MSAN"
356+
// SYCL_DEVICE_MSAN_MACRO: llvm-link{{.*}} "-only-needed"
357+
// SYCL_DEVICE_MSAN_MACRO-SAME: "{{.*}}libsycl-msan.bc"

clang/test/Driver/sycl-device-lib.cpp

Lines changed: 62 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -155,36 +155,36 @@
155155
/// ###########################################################################
156156
/// test behavior of libsycl-asan.o linking when -fsanitize=address is available
157157
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -fsanitize=address -### 2>&1 \
158-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
158+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
159159
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend -fsanitize=address -### 2>&1 \
160-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
160+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
161161
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend=spir64 -fsanitize=address -### 2>&1 \
162-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
162+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
163163
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=address -### 2>&1 \
164-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
164+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
165165
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \
166-
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_SANITIZER
166+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN
167167
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=address -DUSE_SYCL_DEVICE_ASAN" -### 2>&1 \
168168
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_ASAN_MACRO
169-
// SYCL_DEVICE_LIB_SANITIZER: clang-linker-wrapper{{.*}} "-sycl-device-libraries
170-
// SYCL_DEVICE_LIB_SANITIZER: {{.*}}libsycl-crt.new.o
171-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-complex.
172-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-complex-fp64.
173-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-cmath.new.o
174-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-cmath-fp64.new.o
175-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-imf.new.o
176-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-imf-fp64.new.o
177-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-imf-bf16.new.o
178-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-cassert.new.o
179-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-cstring.new.o
180-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-complex.new.o
181-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
182-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-cmath.new.o
183-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
184-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-imf.new.o
185-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
186-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
187-
// SYCL_DEVICE_LIB_SANITIZER-SAME: {{.*}}libsycl-asan.new.o
169+
// SYCL_DEVICE_LIB_ASAN: clang-linker-wrapper{{.*}} "-sycl-device-libraries
170+
// SYCL_DEVICE_LIB_ASAN: {{.*}}libsycl-crt.new.o
171+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex.
172+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-complex-fp64.
173+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath.new.o
174+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-cmath-fp64.new.o
175+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf.new.o
176+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-fp64.new.o
177+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-imf-bf16.new.o
178+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cassert.new.o
179+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cstring.new.o
180+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex.new.o
181+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
182+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath.new.o
183+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
184+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf.new.o
185+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
186+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
187+
// SYCL_DEVICE_LIB_ASAN-SAME: {{.*}}libsycl-asan.new.o
188188
// SYCL_DEVICE_ASAN_MACRO: "-cc1"
189189
// SYCL_DEVICE_ASAN_MACRO-SAME: "USE_SYCL_DEVICE_ASAN"
190190
// SYCL_DEVICE_ASAN_MACRO: libsycl-asan.new.o
@@ -314,3 +314,41 @@
314314
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
315315
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
316316
// SYCL_DEVICE_LIB_ASAN_MUL-SAME: {{.*}}libsycl-asan.new.o
317+
318+
319+
/// ###########################################################################
320+
/// test behavior of libsycl-msan.o linking when -fsanitize=memory is available
321+
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -fsanitize=memory -### 2>&1 \
322+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
323+
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend -fsanitize=memory -### 2>&1 \
324+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
325+
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xsycl-target-frontend=spir64 -fsanitize=memory -### 2>&1 \
326+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
327+
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=memory -### 2>&1 \
328+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
329+
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \
330+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN
331+
// RUN: %clangxx -fsycl --offload-new-driver %s --sysroot=%S/Inputs/SYCL -Xarch_device "-fsanitize=memory -DUSE_SYCL_DEVICE_MSAN" -### 2>&1 \
332+
// RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_MSAN_MACRO
333+
// SYCL_DEVICE_LIB_MSAN: clang-linker-wrapper{{.*}} "-sycl-device-libraries
334+
// SYCL_DEVICE_LIB_MSAN: {{.*}}libsycl-crt.new.o
335+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex.
336+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-complex-fp64.
337+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath.new.o
338+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-cmath-fp64.new.o
339+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf.new.o
340+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-fp64.new.o
341+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-imf-bf16.new.o
342+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cassert.new.o
343+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cstring.new.o
344+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex.new.o
345+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-complex-fp64.new.o
346+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath.new.o
347+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-cmath-fp64.new.o
348+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf.new.o
349+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-fp64.new.o
350+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-fallback-imf-bf16.new.o
351+
// SYCL_DEVICE_LIB_MSAN-SAME: {{.*}}libsycl-msan.new.o
352+
// SYCL_DEVICE_MSAN_MACRO: "-cc1"
353+
// SYCL_DEVICE_MSAN_MACRO-SAME: "USE_SYCL_DEVICE_MSAN"
354+
// SYCL_DEVICE_MSAN_MACRO: libsycl-msan.new.o

0 commit comments

Comments
 (0)