Skip to content

Commit be88aea

Browse files
seven-milelanza
authored andcommitted
[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 5d863e2 commit be88aea

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

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

+2-1
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
}

clang/lib/CIR/CodeGen/CIRGenModule.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -3049,6 +3049,9 @@ mlir::cir::SourceLanguage CIRGenModule::getCIRSourceLanguage() {
30493049
using CIRLang = mlir::cir::SourceLanguage;
30503050
auto opts = getLangOpts();
30513051

3052+
if (opts.OpenCL && !opts.OpenCLCPlusPlus)
3053+
return CIRLang::OpenCLC;
3054+
30523055
if (opts.CPlusPlus || opts.CPlusPlus11 || opts.CPlusPlus14 ||
30533056
opts.CPlusPlus17 || opts.CPlusPlus20 || opts.CPlusPlus23 ||
30543057
opts.CPlusPlus26)
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)