Skip to content

Commit 83d5272

Browse files
authored
[CIR][Dialect] Add OpenCL C language in cir.lang (#774)
This PR adds OpenCL C language case to the enum `mlir::cir::SourceLanguage`, and maps `opts.OpenCL && !opts.OpenCLCPlusPlus` to it.
1 parent 14aca60 commit 83d5272

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

clang/include/clang/CIR/Dialect/IR/CIRAttrs.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ class CIRUnitAttr<string name, string attrMnemonic, list<Trait> traits = []>
4343

4444
def C : I32EnumAttrCase<"C", 1, "c">;
4545
def CXX : I32EnumAttrCase<"CXX", 2, "cxx">;
46+
def OpenCLC : I32EnumAttrCase<"OpenCLC", 3, "opencl_c">;
4647

4748
def SourceLanguage : I32EnumAttr<"SourceLanguage", "Source language", [
48-
C, CXX
49+
C, CXX, OpenCLC
4950
]> {
5051
let cppNamespace = "::mlir::cir";
5152
let genSpecializedAttr = 0;

clang/lib/CIR/CodeGen/CIRGenModule.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3048,6 +3048,9 @@ mlir::cir::SourceLanguage CIRGenModule::getCIRSourceLanguage() {
30483048
using CIRLang = mlir::cir::SourceLanguage;
30493049
auto opts = getLangOpts();
30503050

3051+
if (opts.OpenCL && !opts.OpenCLCPlusPlus)
3052+
return CIRLang::OpenCLC;
3053+
30513054
if (opts.CPlusPlus || opts.CPlusPlus11 || opts.CPlusPlus14 ||
30523055
opts.CPlusPlus17 || opts.CPlusPlus20 || opts.CPlusPlus23 ||
30533056
opts.CPlusPlus26)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// RUN: %clang_cc1 -cl-std=CL3.0 -O0 -fclangir -emit-cir -triple spirv64-unknown-unknown %s -o %t.cir
2+
// RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR
3+
4+
// CIR: module{{.*}} attributes {{{.*}}cir.lang = #cir.lang<opencl_c>

0 commit comments

Comments
 (0)