Skip to content

Commit 612566a

Browse files
committed
Merge from 'main' to 'sycl-web' (1 commits)
CONFLICT (content): Merge conflict in clang/lib/Driver/Driver.cpp
2 parents f7288cf + 4e2b5a6 commit 612566a

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2562,10 +2562,14 @@ defm openmp_optimistic_collapse : BoolFOption<"openmp-optimistic-collapse",
25622562
PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>, BothFlags<[NoArgumentUnused, HelpHidden]>>;
25632563
def static_openmp: Flag<["-"], "static-openmp">,
25642564
HelpText<"Use the static host OpenMP runtime while linking.">;
2565+
def offload_new_driver : Flag<["--"], "offload-new-driver">, Flags<[CC1Option]>, Group<Action_Group>,
2566+
HelpText<"Use the new driver for offloading compilation.">;
2567+
def no_offload_new_driver : Flag<["--"], "no-offload-new-driver">, Flags<[CC1Option]>, Group<Action_Group>,
2568+
HelpText<"Don't Use the new driver for offloading compilation.">;
25652569
def fopenmp_new_driver : Flag<["-"], "fopenmp-new-driver">, Flags<[CC1Option]>, Group<Action_Group>,
25662570
HelpText<"Use the new driver for OpenMP offloading.">;
25672571
def fno_openmp_new_driver : Flag<["-"], "fno-openmp-new-driver">, Flags<[CC1Option]>, Group<Action_Group>,
2568-
HelpText<"Don't use the new driver for OpenMP offloading.">;
2572+
Alias<no_offload_new_driver>, HelpText<"Don't use the new driver for OpenMP offloading.">;
25692573
def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>, Flags<[CC1Option]>,
25702574
HelpText<"Disable tail call optimization, keeping the call stack accurate">,
25712575
MarshallingInfoFlag<CodeGenOpts<"DisableTailCalls">>;

clang/lib/Driver/Driver.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6076,21 +6076,20 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
60766076
// Builder to be used to build offloading actions.
60776077
OffloadingActionBuilder OffloadBuilder(C, Args, Inputs);
60786078

6079+
bool UseNewOffloadingDriver =
6080+
(C.isOffloadingHostKind(Action::OFK_OpenMP) &&
6081+
Args.hasFlag(options::OPT_fopenmp_new_driver,
6082+
options::OPT_no_offload_new_driver, true)) ||
6083+
Args.hasFlag(options::OPT_offload_new_driver,
6084+
options::OPT_no_offload_new_driver, false);
6085+
60796086
// Construct the actions to perform.
60806087
HeaderModulePrecompileJobAction *HeaderModuleAction = nullptr;
60816088
ExtractAPIJobAction *ExtractAPIAction = nullptr;
60826089
ActionList LinkerInputs;
60836090
ActionList MergerInputs;
6084-
60856091
llvm::SmallVector<phases::ID, phases::MaxNumberOfPhases> PL;
60866092

6087-
// TODO: Do not use the new offloading driver at this time. Offloading
6088-
// support for spir64 targets is not in place with this new path.
6089-
bool UseNewOffloadingDriver =
6090-
C.isOffloadingHostKind(Action::OFK_OpenMP) &&
6091-
Args.hasFlag(options::OPT_fopenmp_new_driver,
6092-
options::OPT_fno_openmp_new_driver, true);
6093-
60946093
for (auto &I : Inputs) {
60956094
types::ID InputType = I.first;
60966095
const Arg *InputArg = I.second;
@@ -6283,8 +6282,7 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
62836282
// Check if this Linker Job should emit a static library.
62846283
if (ShouldEmitStaticLibrary(Args)) {
62856284
LA = C.MakeAction<StaticLibJobAction>(LinkerInputs, LinkType);
6286-
} else if (UseNewOffloadingDriver &&
6287-
C.getActiveOffloadKinds() != Action::OFK_None) {
6285+
} else if (UseNewOffloadingDriver) {
62886286
LA = C.MakeAction<LinkerWrapperJobAction>(LinkerInputs, types::TY_Image);
62896287
LA->propagateHostOffloadInfo(C.getActiveOffloadKinds(),
62906288
/*BoundArch=*/nullptr);

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4689,8 +4689,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
46894689
bool IsDeviceOffloadAction = !(JA.isDeviceOffloading(Action::OFK_None) ||
46904690
JA.isDeviceOffloading(Action::OFK_Host));
46914691
bool IsHostOffloadingAction =
4692-
JA.isHostOffloading(Action::OFK_OpenMP) &&
4693-
!Args.hasArg(options::OPT_fno_openmp_new_driver);
4692+
(JA.isHostOffloading(Action::OFK_OpenMP) &&
4693+
Args.hasFlag(options::OPT_fopenmp_new_driver,
4694+
options::OPT_no_offload_new_driver, true)) ||
4695+
Args.hasFlag(options::OPT_offload_new_driver,
4696+
options::OPT_no_offload_new_driver, false);
46944697
bool IsUsingLTO = D.isUsingLTO(IsDeviceOffloadAction);
46954698
auto LTOMode = D.getLTOMode(IsDeviceOffloadAction);
46964699

@@ -5154,7 +5157,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
51545157
// Only AMDGPU supports device-side LTO.
51555158
if (IsDeviceOffloadAction &&
51565159
!Args.hasFlag(options::OPT_fopenmp_new_driver,
5157-
options::OPT_fno_openmp_new_driver, true) &&
5160+
options::OPT_no_offload_new_driver, true) &&
5161+
!Args.hasFlag(options::OPT_offload_new_driver,
5162+
options::OPT_no_offload_new_driver, false) &&
51585163
!Triple.isAMDGPU()) {
51595164
D.Diag(diag::err_drv_unsupported_opt_for_target)
51605165
<< Args.getLastArg(options::OPT_foffload_lto,

0 commit comments

Comments
 (0)