diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -539,8 +539,7 @@ if (LangOpts.OpenCL) { EmitOpenCLMetadata(); // Emit SPIR version. - if (getTriple().getArch() == llvm::Triple::spir || - getTriple().getArch() == llvm::Triple::spir64) { + if (getTriple().isSPIR()) { // SPIR v2.0 s2.12 - The SPIR version used by the module is stored in the // opencl.spir.version named metadata. llvm::Metadata *SPIRVerElts[] = { diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -3349,10 +3349,8 @@ Res.getFrontendOpts().ProgramAction); // Turn on -Wspir-compat for SPIR target. - auto Arch = T.getArch(); - if (Arch == llvm::Triple::spir || Arch == llvm::Triple::spir64) { + if (T.isSPIR()) Res.getDiagnosticOpts().Warnings.push_back("spir-compat"); - } // If sanitizer is enabled, disable OPT_ffine_grained_bitfield_accesses. if (Res.getCodeGenOpts().FineGrainedBitfieldAccesses && diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -1070,8 +1070,7 @@ Builder.defineMacro(#Ext); #include "clang/Basic/OpenCLExtensions.def" - auto Arch = TI.getTriple().getArch(); - if (Arch == llvm::Triple::spir || Arch == llvm::Triple::spir64) + if (TI.getTriple().isSPIR()) Builder.defineMacro("__IMAGE_SUPPORT__"); } diff --git a/llvm/include/llvm/ADT/Triple.h b/llvm/include/llvm/ADT/Triple.h --- a/llvm/include/llvm/ADT/Triple.h +++ b/llvm/include/llvm/ADT/Triple.h @@ -671,6 +671,11 @@ getEnvironment() == Triple::MuslEABIHF; } + /// Tests whether the target is SPIR (32- or 64-bit). + bool isSPIR() const { + return getArch() == Triple::spir || getArch() == Triple::spir64; + } + /// Tests whether the target is NVPTX (32- or 64-bit). bool isNVPTX() const { return getArch() == Triple::nvptx || getArch() == Triple::nvptx64;