Author: Matt Arsenault Date: 2026-06-24T23:02:14+02:00 New Revision: 1338319d3cdd710ecdab9377c0aa1b61206fc4bd
URL: https://github.com/llvm/llvm-project/commit/1338319d3cdd710ecdab9377c0aa1b61206fc4bd DIFF: https://github.com/llvm/llvm-project/commit/1338319d3cdd710ecdab9377c0aa1b61206fc4bd.diff LOG: clang: Replace getTargetID API with isProcessorName (#205653) The "target ID" naming is an AMDGPUism. Replace the getTargetID query with an isProcessorName predicate so the target reports whether the string should be considered a match. This makes alias handling more natural than checking for exact match, and avoids an unnecessary parse of the target ID. Co-authored-by: Claude (Opus 4.8) <[email protected]> Added: Modified: clang/include/clang/Basic/TargetInfo.h clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/AMDGPU.h clang/lib/Sema/SemaAMDGPU.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 74030564c74b1..d1914d626c753 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -1324,10 +1324,10 @@ class TargetInfo : public TransferrableTargetInfo, return Triple; } - /// Returns the target ID if supported. - virtual std::optional<std::string> getTargetID() const { - return std::nullopt; - } + /// Returns true if the target's processor is compatible with the processor + /// named by \p Name, i.e. \p Name names this target's processor or a + /// compatible processor. + virtual bool isProcessorName(StringRef Name) const { return false; } const char *getDataLayoutString() const { assert(!DataLayoutString.empty() && "Uninitialized DataLayout!"); diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp index bfa956fa9a4e3..50f9c1aa1aa02 100644 --- a/clang/lib/Basic/Targets/AMDGPU.cpp +++ b/clang/lib/Basic/Targets/AMDGPU.cpp @@ -295,8 +295,12 @@ void AMDGPUTargetInfo::getTargetDefines(const LangOptions &Opts, Twine("__")); Builder.defineMacro("__amdgcn_processor__", Twine("\"") + Twine(CanonName) + Twine("\"")); - Builder.defineMacro("__amdgcn_target_id__", - Twine("\"") + Twine(*getTargetID()) + Twine("\"")); + Builder.defineMacro( + "__amdgcn_target_id__", + Twine("\"") + + Twine(getCanonicalTargetID(getArchNameAMDGCN(GPUKind), + OffloadArchFeatures)) + + Twine("\"")); for (auto F : getAllPossibleTargetIDFeatures(getTriple(), CanonName)) { auto Loc = OffloadArchFeatures.find(F); if (Loc != OffloadArchFeatures.end()) { diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h index baad17487e9a1..b13e9008b67a4 100644 --- a/clang/lib/Basic/Targets/AMDGPU.h +++ b/clang/lib/Basic/Targets/AMDGPU.h @@ -485,15 +485,11 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo { return true; } - std::optional<std::string> getTargetID() const override { - if (!getTriple().isAMDGCN()) - return std::nullopt; - // When -target-cpu is not set, we assume generic code that it is valid - // for all GPU and use an empty string as target ID to represent that. - if (GPUKind == llvm::AMDGPU::GK_NONE) - return std::string(""); - return getCanonicalTargetID(getArchNameAMDGCN(GPUKind), - OffloadArchFeatures); + bool isProcessorName(StringRef Name) const override { + llvm::AMDGPU::GPUKind NameKind = getTriple().isAMDGCN() + ? llvm::AMDGPU::parseArchAMDGCN(Name) + : llvm::AMDGPU::parseArchR600(Name); + return NameKind == GPUKind; } bool hasHIPImageSupport() const override { return HasImage; } diff --git a/clang/lib/Sema/SemaAMDGPU.cpp b/clang/lib/Sema/SemaAMDGPU.cpp index 757cdfbf20819..29442617b6a13 100644 --- a/clang/lib/Sema/SemaAMDGPU.cpp +++ b/clang/lib/Sema/SemaAMDGPU.cpp @@ -818,8 +818,7 @@ Expr *SemaAMDGPU::ExpandAMDGPUPredicateBuiltIn(Expr *E) { return *ExpandedPredicates.insert(CE).first; } - if (auto TID = Ctx.getTargetInfo().getTargetID()) - P = TID->find(N) == 0; + P = TI.isProcessorName(N); } else { Expr *Arg = CE->getArg(0); if (!Arg || Arg->getType() != Ctx.BuiltinFnTy) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
