https://github.com/XChy created https://github.com/llvm/llvm-project/pull/165214

Currently, we don't support inline asm and asm goto in OpenCL. But it's a 
widely used feature in many scenarios. This patch enables the asm keyword to 
support it.

>From 9739e831b083fb4e711ec2e8b7970e9f87949a24 Mon Sep 17 00:00:00 2001
From: XChy <[email protected]>
Date: Mon, 27 Oct 2025 16:42:30 +0800
Subject: [PATCH] [OpenCL] Support for inline asm

---
 clang/include/clang/Basic/TokenKinds.def |  2 +-
 clang/test/SemaOpenCL/inline-asm.cl      | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 clang/test/SemaOpenCL/inline-asm.cl

diff --git a/clang/include/clang/Basic/TokenKinds.def 
b/clang/include/clang/Basic/TokenKinds.def
index 564d6010181cc..532ef6d79b2d0 100644
--- a/clang/include/clang/Basic/TokenKinds.def
+++ b/clang/include/clang/Basic/TokenKinds.def
@@ -354,7 +354,7 @@ KEYWORD(__ptrauth                   , KEYALL)
 UNARY_EXPR_OR_TYPE_TRAIT(_Countof, CountOf, KEYNOCXX)
 
 // C++ 2.11p1: Keywords.
-KEYWORD(asm                         , KEYCXX|KEYGNU)
+KEYWORD(asm                         , KEYCXX|KEYGNU|KEYOPENCLC|KEYOPENCLCXX)
 KEYWORD(bool                        , BOOLSUPPORT|KEYC23)
 KEYWORD(catch                       , KEYCXX)
 KEYWORD(class                       , KEYCXX)
diff --git a/clang/test/SemaOpenCL/inline-asm.cl 
b/clang/test/SemaOpenCL/inline-asm.cl
new file mode 100644
index 0000000000000..2c402c66ef1d2
--- /dev/null
+++ b/clang/test/SemaOpenCL/inline-asm.cl
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2
+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=clc++
+
+// expected-no-diagnostics
+
+void test(void)
+{
+  asm("");
+loop:
+  asm goto(""::::loop);
+}

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to