@@ -5191,20 +5191,33 @@ Action *Driver::ConstructPhaseAction(
51915191 Args.hasArg (options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC;
51925192 return C.MakeAction <BackendJobAction>(Input, Output);
51935193 }
5194- if (Args.hasArg (options::OPT_emit_llvm) ||
5195- TargetDeviceOffloadKind == Action::OFK_SYCL ||
5196- (((Input->getOffloadingToolChain () &&
5197- Input->getOffloadingToolChain ()->getTriple ().isAMDGPU ()) ||
5198- TargetDeviceOffloadKind == Action::OFK_HIP) &&
5199- ((Args.hasFlag (options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc,
5200- false ) ||
5201- (Args.hasFlag (options::OPT_offload_new_driver,
5202- options::OPT_no_offload_new_driver, false ) &&
5203- (!offloadDeviceOnly () ||
5204- (Input->getOffloadingToolChain () &&
5205- TargetDeviceOffloadKind == Action::OFK_HIP &&
5206- Input->getOffloadingToolChain ()->getTriple ().isSPIRV ())))) ||
5207- TargetDeviceOffloadKind == Action::OFK_OpenMP))) {
5194+
5195+ bool IsEmitLLVM = Args.hasArg (options::OPT_emit_llvm);
5196+ bool IsSYCL = TargetDeviceOffloadKind == Action::OFK_SYCL;
5197+
5198+ auto OffloadingToolChain = Input->getOffloadingToolChain ();
5199+ bool IsAMDGPU =
5200+ OffloadingToolChain && OffloadingToolChain->getTriple ().isAMDGPU ();
5201+ bool IsRDC =
5202+ Args.hasFlag (options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, false );
5203+ bool IsNewOffloadDriver =
5204+ Args.hasFlag (options::OPT_offload_new_driver,
5205+ options::OPT_no_offload_new_driver, false );
5206+ bool IsHIP = TargetDeviceOffloadKind == Action::OFK_HIP;
5207+ bool IsSPIRV =
5208+ OffloadingToolChain && OffloadingToolChain->getTriple ().isSPIRV ();
5209+ bool IsAMDGPUOrHIP = IsAMDGPU || IsHIP;
5210+ bool IsHIPToSPIRV = IsHIP && IsSPIRV;
5211+ bool IsOpenMP = TargetDeviceOffloadKind == Action::OFK_OpenMP;
5212+
5213+ bool IsLLVMBitcodeOutput =
5214+ IsEmitLLVM || IsSYCL ||
5215+ (IsAMDGPUOrHIP &&
5216+ ((IsRDC ||
5217+ (IsNewOffloadDriver && (!offloadDeviceOnly () || IsHIPToSPIRV))) ||
5218+ IsOpenMP));
5219+
5220+ if (IsLLVMBitcodeOutput) {
52085221 types::ID Output =
52095222 Args.hasArg (options::OPT_S) &&
52105223 (TargetDeviceOffloadKind == Action::OFK_None ||
0 commit comments