================ @@ -1044,82 +1040,78 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C, << OpenMPTargets->getAsString(C.getInputArgs()); return; } + + // Make sure these show up in a deterministic order. + std::multiset<StringRef> OpenMPTriples; for (StringRef T : OpenMPTargets->getValues()) OpenMPTriples.insert(T); + + llvm::StringMap<StringRef> FoundNormalizedTriples; + for (StringRef T : OpenMPTriples) { + llvm::Triple TT(ToolChain::getOpenMPTriple(T)); + std::string NormalizedName = TT.normalize(); + + // Make sure we don't have a duplicate triple. + auto [TripleIt, Inserted] = + FoundNormalizedTriples.try_emplace(NormalizedName, T); + if (!Inserted) { + Diag(clang::diag::warn_drv_omp_offload_target_duplicate) + << T << TripleIt->second; + continue; + } + + // If the specified target is invalid, emit a diagnostic. + if (TT.getArch() == llvm::Triple::UnknownArch) { + Diag(clang::diag::err_drv_invalid_omp_target) << T; + continue; + } + + auto &TC = getOffloadToolChain(C.getInputArgs(), Action::OFK_OpenMP, TT, ---------------- shiltian wrote:
no auto https://github.com/llvm/llvm-project/pull/145549 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits