Skip to content

Commit 0c3a341

Browse files
committed
[NFC][clang][driver] Improve readability of long and complex if statement
1 parent a2b4c0f commit 0c3a341

File tree

1 file changed

+36
-31
lines changed

1 file changed

+36
-31
lines changed

clang/lib/Driver/Driver.cpp

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5234,50 +5234,55 @@ Action *Driver::ConstructPhaseAction(
52345234
return C.MakeAction<CompileJobAction>(Input, types::TY_LLVM_BC);
52355235
}
52365236
case phases::Backend: {
5237+
bool IsOffloadHIP = TargetDeviceOffloadKind == Action::OFK_HIP;
5238+
bool IsNewOffloadDriver =
5239+
Args.hasFlag(options::OPT_offload_new_driver,
5240+
options::OPT_no_offload_new_driver, false);
52375241
// Skip a redundant Backend phase for HIP device code when using the new
52385242
// offload driver, where mid-end is done in linker wrapper.
5239-
if (TargetDeviceOffloadKind == Action::OFK_HIP &&
5240-
Args.hasFlag(options::OPT_offload_new_driver,
5241-
options::OPT_no_offload_new_driver, false) &&
5242-
!offloadDeviceOnly())
5243+
if (IsOffloadHIP && IsNewOffloadDriver && !offloadDeviceOnly())
52435244
return Input;
5244-
5245-
if (isUsingLTO() && TargetDeviceOffloadKind == Action::OFK_None) {
5245+
bool IsOffloadBuild = TargetDeviceOffloadKind != Action::OFK_None;
5246+
bool IsEmitLLVM = Args.hasArg(options::OPT_emit_llvm);
5247+
bool IsEmitAssembly = Args.hasArg(options::OPT_S);
5248+
if (isUsingLTO() && !IsOffloadBuild) {
52465249
types::ID Output;
5247-
if (Args.hasArg(options::OPT_ffat_lto_objects) &&
5248-
!Args.hasArg(options::OPT_emit_llvm))
5250+
if (Args.hasArg(options::OPT_ffat_lto_objects) && !IsEmitLLVM)
52495251
Output = types::TY_PP_Asm;
5250-
else if (Args.hasArg(options::OPT_S))
5252+
else if (IsEmitAssembly)
52515253
Output = types::TY_LTO_IR;
52525254
else
52535255
Output = types::TY_LTO_BC;
52545256
return C.MakeAction<BackendJobAction>(Input, Output);
52555257
}
5256-
if (isUsingOffloadLTO() && TargetDeviceOffloadKind != Action::OFK_None) {
5257-
types::ID Output =
5258-
Args.hasArg(options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC;
5258+
if (isUsingOffloadLTO() && IsOffloadBuild) {
5259+
types::ID Output = IsEmitAssembly ? types::TY_LTO_IR : types::TY_LTO_BC;
52595260
return C.MakeAction<BackendJobAction>(Input, Output);
52605261
}
5261-
if (Args.hasArg(options::OPT_emit_llvm) ||
5262-
TargetDeviceOffloadKind == Action::OFK_SYCL ||
5263-
(((Input->getOffloadingToolChain() &&
5264-
Input->getOffloadingToolChain()->getTriple().isAMDGPU() &&
5265-
TargetDeviceOffloadKind != Action::OFK_None) ||
5266-
TargetDeviceOffloadKind == Action::OFK_HIP) &&
5267-
((Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc,
5268-
false) ||
5269-
(Args.hasFlag(options::OPT_offload_new_driver,
5270-
options::OPT_no_offload_new_driver, false) &&
5271-
(!offloadDeviceOnly() ||
5272-
(Input->getOffloadingToolChain() &&
5273-
TargetDeviceOffloadKind == Action::OFK_HIP &&
5274-
Input->getOffloadingToolChain()->getTriple().isSPIRV())))) ||
5275-
TargetDeviceOffloadKind == Action::OFK_OpenMP))) {
5262+
5263+
bool IsOffloadSYCL = TargetDeviceOffloadKind == Action::OFK_SYCL;
5264+
auto OffloadingToolChain = Input->getOffloadingToolChain();
5265+
bool IsOffloadAMDGPU = OffloadingToolChain &&
5266+
OffloadingToolChain->getTriple().isAMDGPU() &&
5267+
IsOffloadBuild;
5268+
bool IsRDC =
5269+
Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, false);
5270+
bool IsSPIRV =
5271+
OffloadingToolChain && OffloadingToolChain->getTriple().isSPIRV();
5272+
bool IsOffloadOpenMP = TargetDeviceOffloadKind == Action::OFK_OpenMP;
5273+
5274+
bool IsLLVMBitcodeOutput =
5275+
IsEmitLLVM || IsOffloadSYCL ||
5276+
((IsOffloadAMDGPU || IsOffloadHIP) &&
5277+
((IsRDC || (IsNewOffloadDriver &&
5278+
(!offloadDeviceOnly() || (IsOffloadHIP && IsSPIRV)))) ||
5279+
IsOffloadOpenMP));
5280+
5281+
if (IsLLVMBitcodeOutput) {
52765282
types::ID Output =
5277-
Args.hasArg(options::OPT_S) &&
5278-
(TargetDeviceOffloadKind == Action::OFK_None ||
5279-
offloadDeviceOnly() ||
5280-
(TargetDeviceOffloadKind == Action::OFK_HIP &&
5283+
IsEmitAssembly &&
5284+
(!IsOffloadBuild || offloadDeviceOnly() ||
5285+
(IsOffloadHIP &&
52815286
!Args.hasFlag(options::OPT_offload_new_driver,
52825287
options::OPT_no_offload_new_driver,
52835288
C.isOffloadingHostKind(Action::OFK_Cuda))))

0 commit comments

Comments
 (0)