Skip to content

Commit 50dd0b3

Browse files
Revert "[Driver][SYCL][NewOffload] Fix duplication of device targets (#14091)"
This reverts commit ec1e92a.
1 parent ec1e92a commit 50dd0b3

File tree

3 files changed

+10
-40
lines changed

3 files changed

+10
-40
lines changed

clang/lib/Driver/Driver.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,6 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
11821182
// of -fsycl*target options passed
11831183
Arg *SYCLTargetsValues = SYCLTargets;
11841184
if (SYCLTargetsValues) {
1185-
llvm::StringSet<> SYCLTriples;
11861185
if (SYCLTargetsValues->getNumValues()) {
11871186

11881187
// Multiple targets are currently not supported when using
@@ -1221,7 +1220,7 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
12211220
const ToolChain *HostTC =
12221221
C.getSingleOffloadToolChain<Action::OFK_Host>();
12231222
llvm::Triple HostTriple = HostTC->getTriple();
1224-
SYCLTriples.insert(HostTriple.normalize());
1223+
UniqueSYCLTriplesVec.push_back(HostTriple);
12251224
continue;
12261225
}
12271226

@@ -1243,16 +1242,10 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
12431242
// the following iterations.
12441243
FoundNormalizedTriples[NormalizedName] = Val;
12451244
llvm::Triple DeviceTriple(MakeSYCLDeviceTriple(UserTargetName));
1246-
SYCLTriples.insert(DeviceTriple.normalize());
1245+
UniqueSYCLTriplesVec.push_back(DeviceTriple);
12471246
if (!Arch.empty())
12481247
DerivedArchs[DeviceTriple.getTriple()].insert(Arch);
12491248
}
1250-
if (!SYCLTriples.empty()) {
1251-
for (const auto &SYCLTriple : SYCLTriples) {
1252-
llvm::Triple Triple(SYCLTriple.getKey());
1253-
UniqueSYCLTriplesVec.push_back(Triple);
1254-
}
1255-
}
12561249
addSYCLDefaultTriple(C, UniqueSYCLTriplesVec);
12571250
} else
12581251
Diag(clang::diag::warn_drv_empty_joined_argument)
@@ -5038,16 +5031,17 @@ class OffloadingActionBuilder final {
50385031
}
50395032

50405033
// By default, we produce an action for each device arch.
5041-
for (auto TargetActionInfo :
5042-
llvm::zip(SYCLDeviceActions, SYCLTargetInfoList)) {
5043-
auto &TargetInfo = std::get<1>(TargetActionInfo);
5044-
if (TargetInfo.TC->getTriple().isNVPTX() && CurPhase >= phases::Backend)
5034+
auto TC = ToolChains.begin();
5035+
for (Action *&A : SYCLDeviceActions) {
5036+
if ((*TC)->getTriple().isNVPTX() && CurPhase >= phases::Backend) {
50455037
// For CUDA, stop to emit LLVM IR so it can be linked later on.
5038+
++TC;
50465039
continue;
5040+
}
50475041

5048-
Action *&A = std::get<0>(TargetActionInfo);
50495042
A = C.getDriver().ConstructPhaseAction(C, Args, CurPhase, A,
50505043
AssociatedOffloadKind);
5044+
++TC;
50515045
}
50525046

50535047
return ABRT_Success;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/// Test that appropriate warnings are output when -fno-sycl-libspirv is used.
22

33
// RUN: not %clangxx -fsycl -fsycl-targets=nvptx64-nvidia-cuda,amdgcn-amd-amdhsa -fno-sycl-libspirv %s -### 2>&1 | FileCheck %s
4-
// CHECK-DAG: warning: '-fno-sycl-libspirv' should not be used with target 'nvptx64-nvidia-cuda'; libspirv is required for correct behavior [-Wno-libspirv-hip-cuda]
5-
// CHECK-DAG: warning: '-fno-sycl-libspirv' should not be used with target 'amdgcn-amd-amdhsa'; libspirv is required for correct behavior [-Wno-libspirv-hip-cuda]
4+
// CHECK: warning: '-fno-sycl-libspirv' should not be used with target 'nvptx64-nvidia-cuda'; libspirv is required for correct behavior [-Wno-libspirv-hip-cuda]
5+
// CHECK: warning: '-fno-sycl-libspirv' should not be used with target 'amdgcn-amd-amdhsa'; libspirv is required for correct behavior [-Wno-libspirv-hip-cuda]
66
// RUN: %clangxx -fsycl -fsycl-targets=spir64-unknown-unknown -fno-sycl-libspirv %s -### 2>&1 | FileCheck --check-prefix=CHECK-SPIR64 %s
77
// CHECK-SPIR64: ignoring '-fno-sycl-libspirv' option as it is not currently supported for target 'spir64-unknown-unknown' [-Woption-ignored]

clang/test/Driver/sycl-offload-new-driver.c

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -120,30 +120,6 @@
120120
// CHK_PACKAGER_OPTS-SAME: {{.*}}triple=spir64-unknown-unknown,arch=,kind=sycl,compile-opts={{.*}}-spir64-opt,link-opts=-spir64-link-opt
121121
// CHK_PACKAGER_OPTS-SAME: {{.*}}triple=spir64_gen-unknown-unknown,arch=pvc,kind=sycl,compile-opts={{.*}}-spir64_gen-opt,link-opts=-spir64_gen-link-opt
122122

123-
/// Check phases with multiple intel_gpu settings
124-
// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl \
125-
// RUN: -fsycl-targets=intel_gpu_dg1,intel_gpu_pvc \
126-
// RUN: --offload-new-driver -ccc-print-phases %s 2>&1 \
127-
// RUN: | FileCheck -check-prefix=MULT_TARG_PHASES %s
128-
// MULT_TARG_PHASES: 0: input, "[[INPUT:.+\.c]]", c++, (host-sycl)
129-
// MULT_TARG_PHASES: 1: append-footer, {0}, c++, (host-sycl)
130-
// MULT_TARG_PHASES: 2: preprocessor, {1}, c++-cpp-output, (host-sycl)
131-
// MULT_TARG_PHASES: 3: compiler, {2}, ir, (host-sycl)
132-
// MULT_TARG_PHASES: 4: input, "[[INPUT]]", c++, (device-sycl, dg1)
133-
// MULT_TARG_PHASES: 5: preprocessor, {4}, c++-cpp-output, (device-sycl, dg1)
134-
// MULT_TARG_PHASES: 6: compiler, {5}, ir, (device-sycl, dg1)
135-
// MULT_TARG_PHASES: 7: backend, {6}, ir, (device-sycl, dg1)
136-
// MULT_TARG_PHASES: 8: offload, "device-sycl (spir64_gen-unknown-unknown:dg1)" {7}, ir
137-
// MULT_TARG_PHASES: 9: input, "[[INPUT]]", c++, (device-sycl, pvc)
138-
// MULT_TARG_PHASES: 10: preprocessor, {9}, c++-cpp-output, (device-sycl, pvc)
139-
// MULT_TARG_PHASES: 11: compiler, {10}, ir, (device-sycl, pvc)
140-
// MULT_TARG_PHASES: 12: backend, {11}, ir, (device-sycl, pvc)
141-
// MULT_TARG_PHASES: 13: offload, "device-sycl (spir64_gen-unknown-unknown:pvc)" {12}, ir
142-
// MULT_TARG_PHASES: 14: clang-offload-packager, {8, 13}, image, (device-sycl)
143-
// MULT_TARG_PHASES: 15: offload, "host-sycl (x86_64-unknown-linux-gnu)" {3}, "device-sycl (x86_64-unknown-linux-gnu)" {14}, ir
144-
// MULT_TARG_PHASES: 16: backend, {15}, assembler, (host-sycl)
145-
// MULT_TARG_PHASES: 17: assembler, {16}, object, (host-sycl)
146-
147123
/// Test option passing behavior for clang-offload-wrapper options.
148124
// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
149125
// RUN: -Xsycl-target-backend -backend-opt -### %s 2>&1 \

0 commit comments

Comments
 (0)