[clang] [Clang] diagnosing missing Vulkan environment when using SPIR-V triple (PR #190840)
Tony Guillot via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 17 06:45:42 PDT 2026
================
@@ -341,20 +343,27 @@ class LLVM_LIBRARY_VISIBILITY SPIRVTargetInfo : public BaseSPIRVTargetInfo {
: BaseSPIRVTargetInfo(Triple, Opts) {
assert(Triple.getArch() == llvm::Triple::spirv &&
"Invalid architecture for Logical SPIR-V.");
- assert(Triple.getOS() == llvm::Triple::Vulkan &&
- Triple.getVulkanVersion() != llvm::VersionTuple(0) &&
- "Logical SPIR-V requires a valid Vulkan environment.");
- assert(Triple.getEnvironment() >= llvm::Triple::Pixel &&
- Triple.getEnvironment() <= llvm::Triple::Amplification &&
- "Logical SPIR-V environment must be a valid shader stage.");
PointerWidth = PointerAlign = 64;
// SPIR-V IDs are represented with a single 32-bit word.
SizeType = TargetInfo::UnsignedInt;
- VectorsAreElementAligned = true;
resetDataLayout();
}
+ // SPIR-V targeting requires a fully specified Vulkan environment.
+ // Validate here before CreateTargetInfo() to emit a proper diagnostic
+ bool validateTarget(DiagnosticsEngine &Diags) const override {
+ if (getTriple().getOS() != llvm::Triple::Vulkan ||
+ getTriple().getVulkanVersion() == llvm::VersionTuple(0)) {
+ Diags.Report(diag::err_fe_spirv_requires_vulkan);
----------------
to268 wrote:
> Every diagnostic message in the DiagnosticFrontendKinds.td file has the ..._fe... inside it
If you scroll enough in the file, you can find diagnostics that does not uses this naming scheme. MaskRay's suggestion is accurate, so change the naming scheme to `err_target`.
https://github.com/llvm/llvm-project/pull/190840
More information about the cfe-commits
mailing list