@@ -4403,15 +4403,9 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
44034403void Driver::BuildDefaultActions (Compilation &C, DerivedArgList &Args,
44044404 const InputList &Inputs,
44054405 ActionList &Actions) const {
4406-
4407- bool UseNewOffloadingDriver =
4408- C.isOffloadingHostKind (Action::OFK_OpenMP) ||
4409- C.isOffloadingHostKind (Action::OFK_SYCL) ||
4410- Args.hasFlag (options::OPT_foffload_via_llvm,
4411- options::OPT_fno_offload_via_llvm, false ) ||
4412- Args.hasFlag (options::OPT_offload_new_driver,
4413- options::OPT_no_offload_new_driver,
4414- C.isOffloadingHostKind (Action::OFK_Cuda));
4406+ bool UseNewOffloadingDriver = Args.hasFlag (
4407+ options::OPT_offload_new_driver, options::OPT_no_offload_new_driver,
4408+ C.getActiveOffloadKinds () != Action::OFK_None);
44154409
44164410 // Builder to be used to build offloading actions.
44174411 std::unique_ptr<OffloadingActionBuilder> OffloadBuilder =
@@ -5018,8 +5012,8 @@ Action *Driver::BuildOffloadingActions(Compilation &C,
50185012 bool ShouldBundleHIP =
50195013 Args.hasFlag (options::OPT_gpu_bundle_output,
50205014 options::OPT_no_gpu_bundle_output, false ) ||
5021- (HIPNoRDC && offloadDeviceOnly () &&
5022- llvm::none_of (OffloadActions, [](Action *A) {
5015+ (!Args. getLastArg (options::OPT_no_gpu_bundle_output) && HIPNoRDC &&
5016+ offloadDeviceOnly () && llvm::none_of (OffloadActions, [](Action *A) {
50235017 return A->getType () != types::TY_Image;
50245018 }));
50255019
@@ -5195,7 +5189,8 @@ Action *Driver::ConstructPhaseAction(
51955189 // offload driver, where mid-end is done in linker wrapper.
51965190 if (TargetDeviceOffloadKind == Action::OFK_HIP &&
51975191 Args.hasFlag (options::OPT_offload_new_driver,
5198- options::OPT_no_offload_new_driver, false ) &&
5192+ options::OPT_no_offload_new_driver,
5193+ C.getActiveOffloadKinds () != Action::OFK_None) &&
51995194 !offloadDeviceOnly ())
52005195 return Input;
52015196
@@ -5215,8 +5210,13 @@ Action *Driver::ConstructPhaseAction(
52155210 Args.hasArg (options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC;
52165211 return C.MakeAction <BackendJobAction>(Input, Output);
52175212 }
5213+
5214+ bool IsAMDGCNSPIRV = Input->getOffloadingToolChain () &&
5215+ Input->getOffloadingToolChain ()->getTriple ().getOS () ==
5216+ llvm::Triple::OSType::AMDHSA &&
5217+ Input->getOffloadingToolChain ()->getTriple ().isSPIRV ();
52185218 if (Args.hasArg (options::OPT_emit_llvm) ||
5219- TargetDeviceOffloadKind == Action::OFK_SYCL ||
5219+ TargetDeviceOffloadKind == Action::OFK_SYCL || IsAMDGCNSPIRV ||
52205220 (((Input->getOffloadingToolChain () &&
52215221 Input->getOffloadingToolChain ()->getTriple ().isAMDGPU () &&
52225222 TargetDeviceOffloadKind != Action::OFK_None) ||
@@ -5237,7 +5237,8 @@ Action *Driver::ConstructPhaseAction(
52375237 (TargetDeviceOffloadKind == Action::OFK_HIP &&
52385238 !Args.hasFlag (options::OPT_offload_new_driver,
52395239 options::OPT_no_offload_new_driver,
5240- C.isOffloadingHostKind (Action::OFK_Cuda))))
5240+ C.getActiveOffloadKinds () !=
5241+ Action::OFK_None)))
52415242 ? types::TY_LLVM_IR
52425243 : types::TY_LLVM_BC;
52435244 return C.MakeAction <BackendJobAction>(Input, Output);
0 commit comments