Skip to content

Commit 97f7fad

Browse files
committed
Merge remote-tracking branch 'origin/sycl' into llvmspirv_pulldown
2 parents 6387a05 + e95b34b commit 97f7fad

File tree

588 files changed

+10048
-5913
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

588 files changed

+10048
-5913
lines changed

.github/CODEOWNERS

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,15 +165,16 @@ sycl/test-e2e/SeparateCompile/ @intel/dpcpp-tools-reviewers
165165
sycl/test-e2e/Printf/ @intel/dpcpp-tools-reviewers @intel/llvm-reviewers-runtime
166166
sycl/test-e2e/SpecConstants/ @intel/dpcpp-tools-reviewers
167167
sycl/test-e2e/NewOffloadDriver/ @intel/dpcpp-tools-reviewers
168+
sycl/test-e2e/LLVMIntrinsicLowering/ @intel/dpcpp-spirv-reviewers
168169

169170
# Sanitizer
170171
clang/lib/Driver/SanitizerArgs.cpp @intel/dpcpp-sanitizers-review
171-
libdevice/sanitizer_utils.cpp @intel/dpcpp-sanitizers-review
172-
libdevice/include/asan_libdevice.hpp @intel/dpcpp-sanitizers-review
173-
libdevice/include/sanitizer_utils.hpp @intel/dpcpp-sanitizers-review
172+
libdevice/include/asan_rtl.hpp @intel/dpcpp-sanitizers-review
173+
libdevice/include/sanitizer_defs.hpp @intel/dpcpp-sanitizers-review
174+
libdevice/sanitizer/ @intel/dpcpp-sanitizers-review
175+
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h @intel/dpcpp-sanitizers-review
176+
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizerCommon.h @intel/dpcpp-sanitizers-review
177+
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizerOptions.h @intel/dpcpp-sanitizers-review
174178
llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @intel/dpcpp-sanitizers-review
175-
sycl/test-e2e/AddressSanitizer/ @intel/dpcpp-sanitizers-review
176179
llvm/test/Instrumentation/AddressSanitizer/ @intel/dpcpp-sanitizers-review
177-
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizerOptions.h @intel/dpcpp-sanitizers-review
178-
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizerCommon.h @intel/dpcpp-sanitizers-review
179-
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h @intel/dpcpp-sanitizers-review
180+
sycl/test-e2e/AddressSanitizer/ @intel/dpcpp-sanitizers-review

.github/workflows/sycl-linux-build.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ jobs:
169169
--cmake-opt=-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
170170
--cmake-opt="-DLLVM_INSTALL_UTILS=ON" \
171171
--cmake-opt="-DNATIVECPU_USE_OCK=Off" \
172-
--cmake-opt="-DSYCL_PI_TESTS=OFF" \
173172
--cmake-opt="-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=SPIRV"
174173
- name: Compile
175174
id: build

.github/workflows/sycl-linux-precommit.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,6 @@ jobs:
162162
runner: '["Linux", "amdgpu"]'
163163
image: ghcr.io/intel/llvm/ubuntu2204_build:latest
164164
image_extra_opts: --device=/dev/dri --device=/dev/kfd
165-
extra_cmake_args: -DHIP_PLATFORM="AMD" -DAMD_ARCH="gfx1031"
166165
- name: CUDA system
167166
runner: '["Linux", "cuda"]'
168167
image: ghcr.io/intel/llvm/ubuntu2204_build:latest

.github/workflows/sycl-linux-run-tests.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ on:
2121
type: string
2222
required: True
2323
extra_cmake_args:
24-
description: |
25-
If empty, then HIP_PLATFORM and AMD_ARCH would be automatically added
26-
if inputs.target_devices contains 'ext_oneapi_hip'
2724
type: string
2825
required: False
2926
tests_selector:
@@ -282,12 +279,6 @@ jobs:
282279
run: |
283280
if [ -n "$CMAKE_EXTRA_ARGS" ]; then
284281
echo "opts=$CMAKE_EXTRA_ARGS" >> $GITHUB_OUTPUT
285-
else
286-
if [ "${{ contains(inputs.target_devices, 'ext_oneapi_hip') }}" == "true" ]; then
287-
echo 'opts=-DHIP_PLATFORM="AMD" -DAMD_ARCH="gfx1031"' >> $GITHUB_OUTPUT
288-
else
289-
echo 'opts=' >> $GITHUB_OUTPUT
290-
fi
291282
fi
292283
- name: Configure E2E tests
293284
if: inputs.tests_selector == 'e2e'

.github/workflows/sycl-macos-build-and-test.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ jobs:
5252
--ci-defaults $ARGS \
5353
--cmake-opt=-DCMAKE_C_COMPILER_LAUNCHER=ccache \
5454
--cmake-opt=-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
55-
--cmake-opt="-DLLVM_INSTALL_UTILS=ON" \
56-
--cmake-opt="-DSYCL_PI_TESTS=OFF"
55+
--cmake-opt="-DLLVM_INSTALL_UTILS=ON"
5756
- name: Compile
5857
run: cmake --build $GITHUB_WORKSPACE/build --target deploy-sycl-toolchain

.github/workflows/sycl-windows-run-tests.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ jobs:
8888
cmake --build build-e2e --target check-sycl-e2e
8989
- name: Detect hung tests
9090
shell: powershell
91+
if: always()
9192
run: |
9293
$exitCode = 0
9394
$hungTests = Get-Process | Where-Object { ($_.Path -match "llvm\\install") -or ($_.Path -match "llvm\\build-e2e") }

clang/include/clang/AST/PrettyPrinter.h

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,18 @@ struct PrintingPolicy {
6868
SuppressStrongLifetime(false), SuppressLifetimeQualifiers(false),
6969
SuppressTypedefs(false), SuppressFinalSpecifier(false),
7070
SuppressTemplateArgsInCXXConstructors(false),
71-
SuppressDefaultTemplateArgs(true), Bool(LO.Bool),
72-
Nullptr(LO.CPlusPlus11 || LO.C23), NullptrTypeInNamespace(LO.CPlusPlus),
73-
Restrict(LO.C99), Alignof(LO.CPlusPlus11), UnderscoreAlignof(LO.C11),
71+
SuppressDefaultTemplateArgs(true), EnforceDefaultTemplateArgs(false),
72+
Bool(LO.Bool), Nullptr(LO.CPlusPlus11 || LO.C23),
73+
NullptrTypeInNamespace(LO.CPlusPlus), Restrict(LO.C99),
74+
Alignof(LO.CPlusPlus11), UnderscoreAlignof(LO.C11),
7475
UseVoidForZeroParams(!LO.CPlusPlus),
7576
SplitTemplateClosers(!LO.CPlusPlus11), TerseOutput(false),
7677
PolishForDeclaration(false), Half(LO.Half),
7778
MSWChar(LO.MicrosoftExt && !LO.WChar), IncludeNewlines(true),
7879
MSVCFormatting(false), ConstantsAsWritten(false),
7980
SuppressImplicitBase(false), FullyQualifiedName(false),
80-
SuppressDefinition(false), SuppressDefaultTemplateArguments(false),
81-
PrintCanonicalTypes(false),
81+
EnforceScopeForElaboratedTypes(false), SuppressDefinition(false),
82+
SuppressDefaultTemplateArguments(false), PrintCanonicalTypes(false),
8283
SkipCanonicalizationOfTemplateTypeParms(false),
8384
PrintInjectedClassNameWithArguments(true), UsePreferredNames(true),
8485
AlwaysIncludeTypeForTemplateArgument(false),
@@ -241,6 +242,11 @@ struct PrintingPolicy {
241242
LLVM_PREFERRED_TYPE(bool)
242243
unsigned SuppressDefaultTemplateArgs : 1;
243244

245+
/// When true, print template arguments that match the default argument for
246+
/// the parameter, even if they're not specified in the source.
247+
LLVM_PREFERRED_TYPE(bool)
248+
unsigned EnforceDefaultTemplateArgs : 1;
249+
244250
/// Whether we can use 'bool' rather than '_Bool' (even if the language
245251
/// doesn't actually have 'bool', because, e.g., it is defined as a macro).
246252
LLVM_PREFERRED_TYPE(bool)
@@ -339,6 +345,10 @@ struct PrintingPolicy {
339345
LLVM_PREFERRED_TYPE(bool)
340346
unsigned FullyQualifiedName : 1;
341347

348+
/// Enforce fully qualified name printing for elaborated types.
349+
LLVM_PREFERRED_TYPE(bool)
350+
unsigned EnforceScopeForElaboratedTypes : 1;
351+
342352
/// When true does not print definition of a type. E.g.
343353
/// \code
344354
/// template<typename T> class C0 : public C1 {...}

clang/lib/AST/TypePrinter.cpp

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class ElaboratedTypePolicyRAII {
101101
SuppressTagKeyword = Policy.SuppressTagKeyword;
102102
SuppressScope = Policy.SuppressScope;
103103
Policy.SuppressTagKeyword = true;
104-
Policy.SuppressScope = true;
104+
Policy.SuppressScope = !Policy.EnforceScopeForElaboratedTypes;
105105
}
106106

107107
~ElaboratedTypePolicyRAII() {
@@ -1728,8 +1728,10 @@ void TypePrinter::printElaboratedBefore(const ElaboratedType *T,
17281728
Policy.SuppressScope = OldSupressScope;
17291729
return;
17301730
}
1731-
if (Qualifier && !(Policy.SuppressTypedefs &&
1732-
T->getNamedType()->getTypeClass() == Type::Typedef))
1731+
if (Qualifier &&
1732+
!(Policy.SuppressTypedefs &&
1733+
T->getNamedType()->getTypeClass() == Type::Typedef) &&
1734+
!Policy.EnforceScopeForElaboratedTypes)
17331735
Qualifier->print(OS, Policy);
17341736
}
17351737

@@ -2229,15 +2231,6 @@ static void printArgument(const TemplateArgument &A, const PrintingPolicy &PP,
22292231
A.print(PP, OS, IncludeType);
22302232
}
22312233

2232-
static void printArgument(const TemplateArgumentLoc &A,
2233-
const PrintingPolicy &PP, llvm::raw_ostream &OS,
2234-
bool IncludeType) {
2235-
const TemplateArgument::ArgKind &Kind = A.getArgument().getKind();
2236-
if (Kind == TemplateArgument::ArgKind::Type)
2237-
return A.getTypeSourceInfo()->getType().print(OS, PP);
2238-
return A.getArgument().print(PP, OS, IncludeType);
2239-
}
2240-
22412234
static bool isSubstitutedTemplateArgument(ASTContext &Ctx, TemplateArgument Arg,
22422235
TemplateArgument Pattern,
22432236
ArrayRef<TemplateArgument> Args,
@@ -2408,15 +2401,40 @@ template <typename TA>
24082401
static void
24092402
printTo(raw_ostream &OS, ArrayRef<TA> Args, const PrintingPolicy &Policy,
24102403
const TemplateParameterList *TPL, bool IsPack, unsigned ParmIndex) {
2411-
// Drop trailing template arguments that match default arguments.
2412-
if (TPL && Policy.SuppressDefaultTemplateArgs &&
2413-
!Policy.PrintCanonicalTypes && !Args.empty() && !IsPack &&
2404+
llvm::SmallVector<TemplateArgument, 8> ArgsToPrint;
2405+
for (const TA &A : Args)
2406+
ArgsToPrint.push_back(getArgument(A));
2407+
if (TPL && !Policy.PrintCanonicalTypes && !IsPack &&
24142408
Args.size() <= TPL->size()) {
2415-
llvm::SmallVector<TemplateArgument, 8> OrigArgs;
2416-
for (const TA &A : Args)
2417-
OrigArgs.push_back(getArgument(A));
2418-
while (!Args.empty() && getArgument(Args.back()).getIsDefaulted())
2419-
Args = Args.drop_back();
2409+
// Drop trailing template arguments that match default arguments.
2410+
if (Policy.SuppressDefaultTemplateArgs) {
2411+
while (!ArgsToPrint.empty() &&
2412+
getArgument(ArgsToPrint.back()).getIsDefaulted())
2413+
ArgsToPrint.pop_back();
2414+
} else if (Policy.EnforceDefaultTemplateArgs) {
2415+
for (unsigned I = Args.size(); I < TPL->size(); ++I) {
2416+
auto Param = TPL->getParam(I);
2417+
if (auto *TTPD = dyn_cast<TemplateTypeParmDecl>(Param)) {
2418+
// If we met a non default-argument past provided list of arguments,
2419+
// it is either a pack which must be the last arguments, or provided
2420+
// argument list was problematic. Bail out either way. Do the same
2421+
// for each kind of template argument.
2422+
if (!TTPD->hasDefaultArgument())
2423+
break;
2424+
ArgsToPrint.push_back(getArgument(TTPD->getDefaultArgument()));
2425+
} else if (auto *TTPD = dyn_cast<TemplateTemplateParmDecl>(Param)) {
2426+
if (!TTPD->hasDefaultArgument())
2427+
break;
2428+
ArgsToPrint.push_back(getArgument(TTPD->getDefaultArgument()));
2429+
} else if (auto *NTTPD = dyn_cast<NonTypeTemplateParmDecl>(Param)) {
2430+
if (!NTTPD->hasDefaultArgument())
2431+
break;
2432+
ArgsToPrint.push_back(getArgument(NTTPD->getDefaultArgument()));
2433+
} else {
2434+
llvm_unreachable("unexpected template parameter");
2435+
}
2436+
}
2437+
}
24202438
}
24212439

24222440
const char *Comma = Policy.MSVCFormatting ? "," : ", ";
@@ -2425,7 +2443,7 @@ printTo(raw_ostream &OS, ArrayRef<TA> Args, const PrintingPolicy &Policy,
24252443

24262444
bool NeedSpace = false;
24272445
bool FirstArg = true;
2428-
for (const auto &Arg : Args) {
2446+
for (const auto &Arg : ArgsToPrint) {
24292447
// Print the argument into a string.
24302448
SmallString<128> Buf;
24312449
llvm::raw_svector_ostream ArgOS(Buf);

clang/lib/CodeGen/CodeGenTypes.cpp

Lines changed: 1 addition & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -350,34 +350,6 @@ llvm::Type *CodeGenTypes::ConvertFunctionTypeInternal(QualType QFT) {
350350
return ResultType;
351351
}
352352

353-
template <bool NeedTypeInterpret = false>
354-
llvm::Type *getJointMatrixINTELExtType(llvm::Type *CompTy,
355-
ArrayRef<TemplateArgument> TemplateArgs,
356-
const unsigned Val = 0) {
357-
// TODO: we should actually have exactly 5 template parameters: 1 for
358-
// type and 4 for type parameters. But in previous version of the SPIR-V
359-
// spec we have Layout matrix type parameter, that was later removed.
360-
// Once we update to the newest version of the spec - this should be updated.
361-
assert((TemplateArgs.size() == 5 || TemplateArgs.size() == 6) &&
362-
"Wrong JointMatrixINTEL template parameters number");
363-
// This is required to represent optional 'Component Type Interpretation'
364-
// parameter
365-
std::vector<unsigned> Params;
366-
for (size_t I = 1; I != TemplateArgs.size(); ++I) {
367-
assert(TemplateArgs[I].getKind() == TemplateArgument::Integral &&
368-
"Wrong JointMatrixINTEL template parameter");
369-
Params.push_back(TemplateArgs[I].getAsIntegral().getExtValue());
370-
}
371-
// Don't add type interpretation for legacy matrices.
372-
// Legacy matrices has 5 template parameters, while new representation
373-
// has 6.
374-
if (NeedTypeInterpret && TemplateArgs.size() != 5)
375-
Params.push_back(Val);
376-
377-
return llvm::TargetExtType::get(CompTy->getContext(),
378-
"spirv.JointMatrixINTEL", {CompTy}, Params);
379-
}
380-
381353
llvm::Type *
382354
getCooperativeMatrixKHRExtType(llvm::Type *CompTy,
383355
ArrayRef<TemplateArgument> TemplateArgs) {
@@ -394,49 +366,6 @@ getCooperativeMatrixKHRExtType(llvm::Type *CompTy,
394366
CompTy->getContext(), "spirv.CooperativeMatrixKHR", {CompTy}, Params);
395367
}
396368

397-
/// ConvertSYCLJointMatrixINTELType - Convert SYCL joint_matrix type
398-
/// which is represented as a pointer to a structure to LLVM extension type
399-
/// with the parameters that follow SPIR-V JointMatrixINTEL type.
400-
/// The expected representation is:
401-
/// target("spirv.JointMatrixINTEL", %element_type, %rows%, %cols%, %scope%,
402-
/// %use%, (optional) %element_type_interpretation%)
403-
llvm::Type *CodeGenTypes::ConvertSYCLJointMatrixINTELType(RecordDecl *RD) {
404-
auto *TemplateDecl = cast<ClassTemplateSpecializationDecl>(RD);
405-
ArrayRef<TemplateArgument> TemplateArgs =
406-
TemplateDecl->getTemplateArgs().asArray();
407-
assert(TemplateArgs[0].getKind() == TemplateArgument::Type &&
408-
"1st JointMatrixINTEL template parameter must be type");
409-
llvm::Type *CompTy = ConvertType(TemplateArgs[0].getAsType());
410-
411-
// Per JointMatrixINTEL spec the type can have an optional
412-
// 'Component Type Interpretation' parameter. We should emit it in case
413-
// if on SYCL level joint matrix accepts 'bfloat16' or 'tf32' objects as
414-
// matrix's components. Yet 'bfloat16' should be represented as 'int16' and
415-
// 'tf32' as 'float' types.
416-
if (CompTy->isStructTy()) {
417-
StringRef LlvmTyName = CompTy->getStructName();
418-
// Emit half/int16/float for sycl[::*]::{half,bfloat16,tf32}
419-
if (LlvmTyName.starts_with("class.sycl::") ||
420-
LlvmTyName.starts_with("class.__sycl_internal::"))
421-
LlvmTyName = LlvmTyName.rsplit("::").second;
422-
if (LlvmTyName == "half") {
423-
CompTy = llvm::Type::getHalfTy(getLLVMContext());
424-
return getJointMatrixINTELExtType(CompTy, TemplateArgs);
425-
} else if (LlvmTyName == "tf32") {
426-
CompTy = llvm::Type::getFloatTy(getLLVMContext());
427-
// 'tf32' interpretation is mapped to '0'
428-
return getJointMatrixINTELExtType<true>(CompTy, TemplateArgs, 0);
429-
} else if (LlvmTyName == "bfloat16") {
430-
CompTy = llvm::Type::getInt16Ty(getLLVMContext());
431-
// 'bfloat16' interpretation is mapped to '1'
432-
return getJointMatrixINTELExtType<true>(CompTy, TemplateArgs, 1);
433-
} else {
434-
llvm_unreachable("Wrong matrix base type!");
435-
}
436-
}
437-
return getJointMatrixINTELExtType(CompTy, TemplateArgs);
438-
}
439-
440369
/// ConvertSPVCooperativeMatrixType - Convert SYCL joint_matrix type
441370
/// which is represented as a pointer to a structure to LLVM extension type
442371
/// with the parameters that follow SPIR-V CooperativeMatrixKHR type.
@@ -739,11 +668,7 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) {
739668
if (ClangETy && ClangETy->isStructureOrClassType()) {
740669
RecordDecl *RD = ClangETy->getAsCXXRecordDecl();
741670
if (RD && RD->getQualifiedNameAsString() ==
742-
"__spv::__spirv_JointMatrixINTEL") {
743-
ResultType = ConvertSYCLJointMatrixINTELType(RD);
744-
break;
745-
} else if (RD && RD->getQualifiedNameAsString() ==
746-
"__spv::__spirv_CooperativeMatrixKHR") {
671+
"__spv::__spirv_CooperativeMatrixKHR") {
747672
ResultType = ConvertSPVCooperativeMatrixType(RD);
748673
break;
749674
} else if (RD && RD->getQualifiedNameAsString() ==

clang/lib/CodeGen/CodeGenTypes.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,6 @@ class CodeGenTypes {
145145
/// load/store type are the same.
146146
llvm::Type *convertTypeForLoadStore(QualType T, llvm::Type *LLVMTy = nullptr);
147147

148-
/// ConvertSYCLJointMatrixINTELType - Convert SYCL joint_matrix type
149-
/// which is represented as a pointer to a structure to LLVM extension type
150-
/// with the parameters that follow SPIR-V JointMatrixINTEL type.
151-
/// The expected representation is:
152-
/// target("spirv.JointMatrixINTEL", %element_type, %rows%, %cols%, %scope%,
153-
/// %use%, (optional) %element_type_interpretation%)
154-
llvm::Type *ConvertSYCLJointMatrixINTELType(RecordDecl *RD);
155-
156148
/// ConvertSPVCooperativeMatrixType - Convert SYCL joint_matrix type
157149
/// which is represented as a pointer to a structure to LLVM extension type
158150
/// with the parameters that follow SPIR-V CooperativeMatrixKHR type.

clang/lib/Driver/OffloadBundler.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -688,8 +688,11 @@ class ObjectFileHandler final : public FileHandler {
688688
return std::move(Err);
689689

690690
// If we are dealing with a bitcode file do not add special globals
691-
// llvm.used and llvm.compiler.used to the list of defined symbols.
692-
if (SF->isIR() && (Name == "llvm.used" || Name == "llvm.compiler.used"))
691+
// llvm.used and llvm.compiler.used and __AsanDeviceGlobalMetadata to
692+
// the list of defined symbols.
693+
if (SF->isIR() &&
694+
(Name == "llvm.used" || Name == "llvm.compiler.used" ||
695+
Name == "__AsanDeviceGlobalMetadata"))
693696
continue;
694697

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

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10724,12 +10724,8 @@ static void getTripleBasedSPIRVTransOpts(Compilation &C,
1072410724
ArgStringList &TranslatorArgs) {
1072510725
bool IsCPU = Triple.isSPIR() &&
1072610726
Triple.getSubArch() == llvm::Triple::SPIRSubArch_x86_64;
10727-
// Enable NonSemanticShaderDebugInfo.200 for CPU AOT and for non-Windows
10728-
const bool IsWindowsMSVC =
10729-
Triple.isWindowsMSVCEnvironment() ||
10730-
C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment();
10731-
const bool EnableNonSemanticDebug =
10732-
IsCPU || (!IsWindowsMSVC && !C.getDriver().IsFPGAHWMode());
10727+
// Enable NonSemanticShaderDebugInfo.200 for non-FPGA targets.
10728+
const bool EnableNonSemanticDebug = !C.getDriver().IsFPGAHWMode();
1073310729
if (EnableNonSemanticDebug) {
1073410730
TranslatorArgs.push_back(
1073510731
"-spirv-debug-info-version=nonsemantic-shader-200");
@@ -11521,6 +11517,12 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
1152111517
if (Args.hasArg(options::OPT_fsycl_embed_ir))
1152211518
CmdArgs.push_back(Args.MakeArgString("-sycl-embed-ir"));
1152311519

11520+
if (Args.hasFlag(options::OPT_fsycl_allow_device_image_dependencies,
11521+
options::OPT_fno_sycl_allow_device_image_dependencies,
11522+
false))
11523+
CmdArgs.push_back(
11524+
Args.MakeArgString("-sycl-allow-device-image-dependencies"));
11525+
1152411526
// Formulate and add any offload-wrapper and AOT specific options. These
1152511527
// are additional options passed in via -Xsycl-target-linker and
1152611528
// -Xsycl-target-backend.

0 commit comments

Comments
 (0)