aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 8fa8673..6314bc5 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -4597,10 +4597,13 @@ Action *Driver::BuildOffloadingActions(Compilation &C,
// Get the product of all bound architectures and toolchains.
SmallVector<std::pair<const ToolChain *, StringRef>> TCAndArchs;
- for (const ToolChain *TC : ToolChains)
- for (StringRef Arch : getOffloadArchs(C, Args, Kind, TC))
+ for (const ToolChain *TC : ToolChains) {
+ llvm::DenseSet<StringRef> Arches = getOffloadArchs(C, Args, Kind, TC);
+ SmallVector<StringRef, 0> Sorted(Arches.begin(), Arches.end());
+ llvm::sort(Sorted);
+ for (StringRef Arch : Sorted)
TCAndArchs.push_back(std::make_pair(TC, Arch));
- llvm::sort(TCAndArchs, llvm::less_second());
+ }
for (unsigned I = 0, E = TCAndArchs.size(); I != E; ++I)
DeviceActions.push_back(C.MakeAction<InputAction>(*InputArg, InputType));