Skip to content

Commit 23fd3a0

Browse files
author
iclsrc
committed
Merge from 'sycl' to 'sycl-web' (#2)
2 parents 9dfc289 + 7a2260f commit 23fd3a0

File tree

268 files changed

+9057
-2366
lines changed

Some content is hidden

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

268 files changed

+9057
-2366
lines changed

clang/include/clang/Basic/Attr.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,12 +1153,12 @@ def SYCLIntelMaxGlobalWorkDim : InheritableAttr {
11531153
let PragmaAttributeSupport = 0;
11541154
}
11551155

1156-
def SYCLIntelUsesGlobalWorkOffset : InheritableAttr {
1157-
let Spellings = [CXX11<"intelfpga","uses_global_work_offset">];
1158-
let Args = [BoolArgument<"Enabled">];
1156+
def SYCLIntelNoGlobalWorkOffset : InheritableAttr {
1157+
let Spellings = [CXX11<"intelfpga","no_global_work_offset">];
1158+
let Args = [BoolArgument<"Enabled", 1>];
11591159
let LangOpts = [SYCLIsDevice, SYCLIsHost];
11601160
let Subjects = SubjectList<[Function], ErrorDiag>;
1161-
let Documentation = [SYCLIntelUsesGlobalWorkOffsetDocs];
1161+
let Documentation = [SYCLIntelNoGlobalWorkOffsetAttrDocs];
11621162
let PragmaAttributeSupport = 0;
11631163
}
11641164

clang/include/clang/Basic/AttrDocs.td

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2012,13 +2012,14 @@ device kernel, the attribute is ignored and it is not propagated to a kernel.
20122012
}];
20132013
}
20142014

2015-
def SYCLIntelUsesGlobalWorkOffsetDocs : Documentation {
2015+
def SYCLIntelNoGlobalWorkOffsetAttrDocs : Documentation {
20162016
let Category = DocCatFunction;
2017-
let Heading = "uses_global_work_offset (IntelFPGA)";
2017+
let Heading = "no_global_work_offset (IntelFPGA)";
20182018
let Content = [{
20192019
Applies to a device function/lambda function or function call operator (of a
2020-
function object). If 0, compiler doesn't use the global work offset values for
2021-
the device function. Valid values are 0 and 1.
2020+
function object). If 1, compiler doesn't use the global work offset values for
2021+
the device function. Valid values are 0 and 1. If used without argument, value
2022+
of 1 is set implicitly.
20222023
}];
20232024
}
20242025

clang/include/clang/Basic/AttributeCommonInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ class AttributeCommonInfo {
159159
ParsedAttr == AT_SYCLIntelNumSimdWorkItems ||
160160
ParsedAttr == AT_SYCLIntelMaxWorkGroupSize ||
161161
ParsedAttr == AT_SYCLIntelMaxGlobalWorkDim ||
162-
ParsedAttr == AT_SYCLIntelUsesGlobalWorkOffset)
162+
ParsedAttr == AT_SYCLIntelNoGlobalWorkOffset)
163163
return true;
164164

165165
return false;

clang/include/clang/Driver/Action.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,8 @@ class OffloadUnbundlingJobAction final : public JobAction {
613613

614614
public:
615615
// Offloading unbundling doesn't change the type of output.
616-
OffloadUnbundlingJobAction(ActionList &Inputs);
616+
OffloadUnbundlingJobAction(Action *Input);
617+
OffloadUnbundlingJobAction(ActionList &Inputs, types::ID Type);
617618

618619
/// Register information about a dependent action.
619620
void registerDependentActionInfo(const ToolChain *TC, StringRef BoundArch,

clang/include/clang/Driver/Options.td

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ def u_Group : OptionGroup<"<u group>">, Group<Link_Group>, DocFlatten;
197197
def reserved_lib_Group : OptionGroup<"<reserved libs group>">,
198198
Flags<[Unsupported]>;
199199

200+
def offload_lib_Group : OptionGroup<"<offload libs group>">;
201+
200202
// Temporary groups for clang options which we know we don't support,
201203
// but don't want to verbosely warn the user about.
202204
def clang_ignored_f_Group : OptionGroup<"<clang ignored f group>">,
@@ -1674,7 +1676,8 @@ def fobjc_nonfragile_abi : Flag<["-"], "fobjc-nonfragile-abi">, Group<f_Group>;
16741676
def fno_objc_nonfragile_abi : Flag<["-"], "fno-objc-nonfragile-abi">, Group<f_Group>;
16751677

16761678
def fobjc_sender_dependent_dispatch : Flag<["-"], "fobjc-sender-dependent-dispatch">, Group<f_Group>;
1677-
def foffload_static_lib_EQ : CommaJoined<["-"], "foffload-static-lib=">, Flags<[DriverOption, CoreOption]>;
1679+
def foffload_static_lib_EQ : CommaJoined<["-"], "foffload-static-lib=">, Flags<[DriverOption, CoreOption]>, Group<offload_lib_Group>;
1680+
def foffload_whole_static_lib_EQ : CommaJoined<["-"], "foffload-whole-static-lib=">, Flags<[DriverOption, CoreOption]>, Group<offload_lib_Group>;
16781681
def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>;
16791682
def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>,
16801683
HelpText<"Parse OpenMP pragmas and generate parallel code.">;

clang/include/clang/Driver/Types.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ TYPE("tempfilelist", Tempfilelist, INVALID, "txt", phases
106106
TYPE("tempentriesfilelist", TempEntriesfilelist, INVALID, "txt", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
107107
TYPE("tempAOCOfilelist", TempAOCOfilelist, INVALID, "txt", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
108108
TYPE("archive", Archive, INVALID, "a", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
109+
TYPE("wholearchive", WholeArchive, INVALID, "a", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
109110
TYPE("fpga_aocx", FPGA_AOCX, INVALID, "aocx", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
110111
TYPE("fpga_aocr", FPGA_AOCR, INVALID, "aocr", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
111112
TYPE("fpga_aoco", FPGA_AOCO, INVALID, "aoco", phases::Compile, phases::Backend, phases::Assemble, phases::Link)

clang/include/clang/Driver/Types.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ namespace types {
8484
/// isFPGA - Is this FPGA input.
8585
bool isFPGA(ID Id);
8686

87+
/// isArchive - Is this an archive input.
88+
bool isArchive(ID Id);
89+
8790
/// isObjC - Is this an "ObjC" input (Obj-C and Obj-C++ sources and headers).
8891
bool isObjC(ID Id);
8992

clang/lib/AST/ItaniumMangle.cpp

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2456,67 +2456,6 @@ static bool isTypeSubstitutable(Qualifiers Quals, const Type *Ty,
24562456
return true;
24572457
}
24582458

2459-
namespace {
2460-
struct DeclContextDesc {
2461-
Decl::Kind DeclKind;
2462-
StringRef Name;
2463-
};
2464-
} // namespace
2465-
2466-
// For Scopes argument, the only supported Decl::Kind values are:
2467-
// - Namespace
2468-
// - CXXRecord
2469-
// - ClassTemplateSpecialization
2470-
static bool matchQualifiedTypeName(const QualType &Ty,
2471-
ArrayRef<DeclContextDesc> Scopes) {
2472-
// The idea: check the declaration context chain starting from the type
2473-
// itself. At each step check the context is of expected kind
2474-
// (namespace) and name.
2475-
const CXXRecordDecl *RecTy = Ty->getAsCXXRecordDecl();
2476-
2477-
if (!RecTy)
2478-
return false; // only classes/structs supported
2479-
const auto *Ctx = dyn_cast<DeclContext>(RecTy);
2480-
2481-
for (const auto &Scope : llvm::reverse(Scopes)) {
2482-
Decl::Kind DK = Ctx->getDeclKind();
2483-
StringRef Name = "";
2484-
2485-
if (DK != Scope.DeclKind)
2486-
return false;
2487-
2488-
switch (DK) {
2489-
case Decl::Kind::ClassTemplateSpecialization:
2490-
// ClassTemplateSpecializationDecl inherits from CXXRecordDecl
2491-
case Decl::Kind::CXXRecord:
2492-
Name = cast<CXXRecordDecl>(Ctx)->getName();
2493-
break;
2494-
case Decl::Kind::Namespace:
2495-
Name = cast<NamespaceDecl>(Ctx)->getName();
2496-
break;
2497-
default:
2498-
return false;
2499-
}
2500-
if (Name != Scope.Name)
2501-
return false;
2502-
Ctx = Ctx->getParent();
2503-
}
2504-
return Ctx->isTranslationUnit();
2505-
}
2506-
2507-
static bool isSYCLHostHalfType(const Type *Ty) {
2508-
// FIXME: this is not really portable, since the bunch of namespace below
2509-
// is not specified by the SYCL standard and highly depends on particular
2510-
// implementation
2511-
static const std::array<DeclContextDesc, 5> Scopes = {
2512-
DeclContextDesc{Decl::Kind::Namespace, "cl"},
2513-
DeclContextDesc{Decl::Kind::Namespace, "sycl"},
2514-
DeclContextDesc{Decl::Kind::Namespace, "detail"},
2515-
DeclContextDesc{Decl::Kind::Namespace, "half_impl"},
2516-
DeclContextDesc{Decl::Kind::CXXRecord, "half"}};
2517-
return matchQualifiedTypeName(QualType(Ty, 0), Scopes);
2518-
}
2519-
25202459
void CXXNameMangler::mangleType(QualType T) {
25212460
// If our type is instantiation-dependent but not dependent, we mangle
25222461
// it as it was written in the source, removing any top-level sugar.
@@ -2576,11 +2515,6 @@ void CXXNameMangler::mangleType(QualType T) {
25762515

25772516
bool isSubstitutable =
25782517
isTypeSubstitutable(quals, ty, Context.getASTContext());
2579-
if (Context.isUniqueNameMangler() && isSYCLHostHalfType(ty)) {
2580-
// Set isSubstitutable to false for cl::sycl::detail::half_impl::half
2581-
// to achieve the same mangling for other components
2582-
isSubstitutable = false;
2583-
}
25842518
if (isSubstitutable && mangleSubstitution(T))
25852519
return;
25862520

@@ -3057,11 +2991,6 @@ void CXXNameMangler::mangleType(const RecordType *T) {
30572991
mangleType(static_cast<const TagType*>(T));
30582992
}
30592993
void CXXNameMangler::mangleType(const TagType *T) {
3060-
if (Context.isUniqueNameMangler() && isSYCLHostHalfType(T)) {
3061-
// Mangle cl::sycl::detail::half_imple::half as _Float16
3062-
mangleType(Context.getASTContext().Float16Ty);
3063-
return;
3064-
}
30652994
mangleName(T->getDecl());
30662995
}
30672996

clang/lib/CodeGen/CodeGenFunction.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -669,15 +669,10 @@ void CodeGenFunction::EmitOpenCLKernelMetadata(const FunctionDecl *FD,
669669
llvm::MDNode::get(Context, AttrMDArgs));
670670
}
671671

672-
if (const SYCLIntelUsesGlobalWorkOffsetAttr *A =
673-
FD->getAttr<SYCLIntelUsesGlobalWorkOffsetAttr>()) {
674-
bool IsEnabled = A->getEnabled();
675-
if (!IsEnabled) {
676-
llvm::Metadata *AttrMDArgs[] = {
677-
llvm::ConstantAsMetadata::get(Builder.getInt32(IsEnabled))};
678-
Fn->setMetadata("uses_global_work_offset",
679-
llvm::MDNode::get(Context, AttrMDArgs));
680-
}
672+
if (const SYCLIntelNoGlobalWorkOffsetAttr *A =
673+
FD->getAttr<SYCLIntelNoGlobalWorkOffsetAttr>()) {
674+
if (A->getEnabled())
675+
Fn->setMetadata("no_global_work_offset", llvm::MDNode::get(Context, {}));
681676
}
682677
}
683678

clang/lib/Driver/Action.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,12 @@ OffloadBundlingJobAction::OffloadBundlingJobAction(ActionList &Inputs)
421421

422422
void OffloadUnbundlingJobAction::anchor() {}
423423

424-
OffloadUnbundlingJobAction::OffloadUnbundlingJobAction(ActionList &Inputs)
425-
: JobAction(OffloadUnbundlingJobClass, Inputs, Inputs.back()->getType()) {}
424+
OffloadUnbundlingJobAction::OffloadUnbundlingJobAction(Action *Input)
425+
: JobAction(OffloadUnbundlingJobClass, Input, Input->getType()) {}
426+
427+
OffloadUnbundlingJobAction::OffloadUnbundlingJobAction(ActionList &Inputs,
428+
types:: ID Type)
429+
: JobAction(OffloadUnbundlingJobClass, Inputs, Type) {}
426430

427431
void OffloadWrapperJobAction::anchor() {}
428432

clang/lib/Driver/Driver.cpp

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2469,6 +2469,14 @@ void Driver::BuildInputs(const ToolChain &TC, DerivedArgList &Args,
24692469
Diag(diag::note_use_dashdash);
24702470
}
24712471
}
2472+
else if (A->getOption().matches(options::OPT_offload_lib_Group)) {
2473+
// Add the foffload-static-lib library to the command line to allow
2474+
// processing when no source or object is supplied as well as proper
2475+
// host link.
2476+
Arg *InputArg = MakeInputArg(Args, Opts, A->getValue());
2477+
Inputs.push_back(std::make_pair(types::TY_Object, InputArg));
2478+
A->claim();
2479+
}
24722480
}
24732481
if (CCCIsCPP() && Inputs.empty()) {
24742482
// If called as standalone preprocessor, stdin is processed
@@ -3336,7 +3344,7 @@ class OffloadingActionBuilder final {
33363344

33373345
std::string InputName = IA->getInputArg().getAsString(Args);
33383346
// Objects should already be consumed with -foffload-static-lib
3339-
if (Args.hasArg(options::OPT_foffload_static_lib_EQ) &&
3347+
if (Args.hasArg(options::OPT_offload_lib_Group) &&
33403348
IA->getType() == types::TY_Object && isObjectFile(InputName))
33413349
return ABRT_Inactive;
33423350

@@ -3870,7 +3878,7 @@ class OffloadingActionBuilder final {
38703878
if (C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment() ||
38713879
!(HostAction->getType() == types::TY_Object &&
38723880
isObjectFile(InputName) &&
3873-
Args.hasArg(options::OPT_foffload_static_lib_EQ))) {
3881+
Args.hasArg(options::OPT_offload_lib_Group))) {
38743882
ActionList HostActionList;
38753883
Action *A(HostAction);
38763884
// Only check for FPGA device information when using fpga SubArch.
@@ -3887,15 +3895,11 @@ class OffloadingActionBuilder final {
38873895
else if (hasFPGABinary(C, InputName, types::TY_FPGA_AOCR))
38883896
A = C.MakeAction<InputAction>(*InputArg, types::TY_FPGA_AOCR);
38893897
}
3890-
HostActionList.push_back(A);
3891-
if (!HostActionList.empty()) {
3892-
auto UnbundlingHostAction =
3893-
C.MakeAction<OffloadUnbundlingJobAction>(HostActionList);
3894-
UnbundlingHostAction->registerDependentActionInfo(
3898+
auto UnbundlingHostAction = C.MakeAction<OffloadUnbundlingJobAction>(A);
3899+
UnbundlingHostAction->registerDependentActionInfo(
38953900
C.getSingleOffloadToolChain<Action::OFK_Host>(),
38963901
/*BoundArch=*/StringRef(), Action::OFK_Host);
3897-
HostAction = UnbundlingHostAction;
3898-
}
3902+
HostAction = UnbundlingHostAction;
38993903
}
39003904
}
39013905

@@ -3945,11 +3949,11 @@ class OffloadingActionBuilder final {
39453949
if (!IsValid || InputActionList.empty())
39463950
return true;
39473951

3948-
auto *DeviceUnbundlingAction =
3949-
C.MakeAction<OffloadUnbundlingJobAction>(InputActionList);
3952+
auto *DeviceUnbundlingAction = C.MakeAction<OffloadUnbundlingJobAction>(
3953+
InputActionList, types::TY_Object);
39503954
DeviceUnbundlingAction->registerDependentActionInfo(
3951-
C.getSingleOffloadToolChain<Action::OFK_Host>(),
3952-
/*BoundArch=*/StringRef(), Action::OFK_Host);
3955+
C.getSingleOffloadToolChain<Action::OFK_Host>(),
3956+
/*BoundArch=*/StringRef(), Action::OFK_Host);
39533957
HostAction = DeviceUnbundlingAction;
39543958

39553959
// Register the offload kinds that are used.
@@ -4357,59 +4361,69 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
43574361
// When a static fat archive is provided, create a new unbundling step
43584362
// for all of the objects.
43594363
if (!C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment() &&
4360-
Args.hasArg(options::OPT_foffload_static_lib_EQ) &&
4361-
!LinkerInputs.empty()) {
4364+
Args.hasArg(options::OPT_offload_lib_Group)) {
43624365
ActionList UnbundlerInputs;
4363-
ActionList TempLinkerInputs;
43644366
for (const auto &LI : LinkerInputs) {
43654367
// Unbundler only handles objects.
43664368
if (auto *IA = dyn_cast<InputAction>(LI)) {
43674369
std::string FileName = IA->getInputArg().getAsString(Args);
43684370
if ((IA->getType() == types::TY_Object && !isObjectFile(FileName)) ||
43694371
IA->getInputArg().getOption().hasFlag(options::LinkerInput))
4370-
// Pass the Input along to linker.
4371-
TempLinkerInputs.push_back(LI);
4372-
else
4373-
// Add to unbundler.
4374-
UnbundlerInputs.push_back(LI);
4375-
} else
4372+
// Pass the Input along to linker only.
4373+
continue;
43764374
UnbundlerInputs.push_back(LI);
4375+
}
43774376
}
4378-
LinkerInputs.clear();
4377+
const Arg *LastArg;
4378+
auto addUnbundlerInput = [&](types::ID T, const Arg *A) {
4379+
const llvm::opt::OptTable &Opts = getOpts();
4380+
Arg *InputArg = MakeInputArg(Args, Opts, A->getValue());
4381+
LastArg = InputArg;
4382+
Action *Current = C.MakeAction<InputAction>(*InputArg, T);
4383+
UnbundlerInputs.push_back(Current);
4384+
};
4385+
for (const auto *A : Args.filtered(options::OPT_foffload_static_lib_EQ))
4386+
addUnbundlerInput(types::TY_Archive, A);
4387+
for (const auto *A :
4388+
Args.filtered(options::OPT_foffload_whole_static_lib_EQ))
4389+
addUnbundlerInput(types::TY_WholeArchive, A);
43794390
if (!UnbundlerInputs.empty()) {
4380-
Action *Current;
4381-
const Arg *LastArg = Args.getLastArg(options::OPT_foffload_static_lib_EQ);
4391+
Action *Current = C.MakeAction<InputAction>(*LastArg, types::TY_Archive);
43824392
OffloadBuilder.addHostDependenceToUnbundlingAction(Current,
4383-
UnbundlerInputs, LastArg);
4393+
UnbundlerInputs, LastArg);
43844394
Current = OffloadBuilder.addDeviceDependencesToHostAction(Current,
4385-
LastArg, phases::Link, PL.back(), PL);
4386-
LinkerInputs.push_back(Current);
4395+
LastArg, phases::Link, PL.back(), PL);
43874396
}
4388-
for (const auto &TLI : TempLinkerInputs)
4389-
LinkerInputs.push_back(TLI);
43904397
}
43914398
const llvm::opt::OptTable &Opts = getOpts();
4399+
auto unbundleStaticLib = [&](types::ID T, const Arg *A) {
4400+
Arg *InputArg = MakeInputArg(Args, Opts, A->getValue());
4401+
Action *Current = C.MakeAction<InputAction>(*InputArg, T);
4402+
OffloadBuilder.addHostDependenceToDeviceActions(Current, InputArg, Args);
4403+
OffloadBuilder.addDeviceDependencesToHostAction(
4404+
Current, InputArg, phases::Link, PL.back(), PL);
4405+
};
43924406
for (const auto *A : Args.filtered(options::OPT_foffload_static_lib_EQ)) {
4393-
auto unbundleStaticLib = [&](types::ID T) {
4394-
Arg *InputArg = MakeInputArg(Args, Opts, A->getValue());
4395-
Action *Current = C.MakeAction<InputAction>(*InputArg, T);
4396-
OffloadBuilder.addHostDependenceToDeviceActions(Current, InputArg, Args);
4397-
OffloadBuilder.addDeviceDependencesToHostAction(
4398-
Current, InputArg, phases::Link, PL.back(), PL);
4399-
};
44004407
// In MSVC environment offload-static-libs are handled slightly different
44014408
// because of missing support for partial linking in the linker. We add an
44024409
// unbundling action for each static archive which produces list files with
44034410
// extracted objects. Device lists are then added to the appropriate device
44044411
// link actions and host list is ignored since we are adding
44054412
// offload-static-libs as normal libraries to the host link command.
44064413
if (C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment())
4407-
unbundleStaticLib(types::TY_Archive);
4414+
unbundleStaticLib(types::TY_Archive, A);
44084415
// Pass along the -foffload-static-lib values to check if we need to
44094416
// add them for unbundling for FPGA AOT static lib usage. Uses FPGA
44104417
// aoco type to differentiate if aoco unbundling is needed.
44114418
if (Args.hasArg(options::OPT_fintelfpga))
4412-
unbundleStaticLib(types::TY_FPGA_AOCO);
4419+
unbundleStaticLib(types::TY_FPGA_AOCO, A);
4420+
}
4421+
for (const auto *A :
4422+
Args.filtered(options::OPT_foffload_whole_static_lib_EQ)) {
4423+
if (C.getDefaultToolChain().getTriple().isWindowsMSVCEnvironment())
4424+
unbundleStaticLib(types::TY_WholeArchive, A);
4425+
if (Args.hasArg(options::OPT_fintelfpga))
4426+
unbundleStaticLib(types::TY_FPGA_AOCO, A);
44134427
}
44144428

44154429
// For an FPGA archive, we add the unbundling step above to take care of
@@ -5282,13 +5296,11 @@ InputInfo Driver::BuildJobsForActionNoCache(
52825296
bool IsFPGAObjLink = (JA->getType() == types::TY_Object &&
52835297
C.getInputArgs().hasArg(options::OPT_fintelfpga) &&
52845298
C.getInputArgs().hasArg(options::OPT_fsycl_link_EQ));
5285-
if (C.getInputArgs().hasArg(options::OPT_foffload_static_lib_EQ) &&
5299+
if (C.getInputArgs().hasArg(options::OPT_offload_lib_Group) &&
52865300
((JA->getType() == types::TY_Archive && IsMSVCEnv) ||
5287-
(UI.DependentOffloadKind != Action::OFK_Host &&
5288-
(JA->getType() == types::TY_Object && !IsMSVCEnv)))) {
5301+
(JA->getType() == types::TY_Object && !IsMSVCEnv))) {
52895302
// Host part of the unbundled static archive is not used.
5290-
if (UI.DependentOffloadKind == Action::OFK_Host &&
5291-
JA->getType() == types::TY_Archive && IsMSVCEnv)
5303+
if (UI.DependentOffloadKind == Action::OFK_Host)
52925304
continue;
52935305
// Host part of the unbundled object when -fintelfpga -fsycl-link is
52945306
// enabled is not used

0 commit comments

Comments
 (0)