[clang] 0ea734d - [CIR] Extract CIR_VAOp base class for VAStartOp and VAEndOp (#185258)

via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 9 10:24:51 PDT 2026


Author: Henrich Lauko
Date: 2026-03-09T18:24:46+01:00
New Revision: 0ea734dd3a5b8b14ee0d8f29260f8166ae4c0d11

URL: https://github.com/llvm/llvm-project/commit/0ea734dd3a5b8b14ee0d8f29260f8166ae4c0d11
DIFF: https://github.com/llvm/llvm-project/commit/0ea734dd3a5b8b14ee0d8f29260f8166ae4c0d11.diff

LOG: [CIR] Extract CIR_VAOp base class for VAStartOp and VAEndOp (#185258)

Both ops share identical arguments and assembly format. Extract a common
base class to eliminate the duplication.

Added: 
    

Modified: 
    clang/include/clang/CIR/Dialect/IR/CIROps.td

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 06c8dc0251208..71610a41c9613 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -6191,7 +6191,15 @@ def CIR_ATan2Op : CIR_BinaryFPToFPBuiltinOp<"atan2", "ATan2Op"> {
 // Variadic Operations
 //===----------------------------------------------------------------------===//
 
-def CIR_VAStartOp : CIR_Op<"va_start"> {
+class CIR_VAOp<string mnemonic> : CIR_Op<mnemonic> {
+  let arguments = (ins CIR_PointerType:$arg_list);
+
+  let assemblyFormat = [{
+    $arg_list attr-dict `:` type(operands)
+  }];
+}
+
+def CIR_VAStartOp : CIR_VAOp<"va_start"> {
   let summary = "Starts a variable argument list";
   let description = [{
     The cir.va_start operation models the C/C++ va_start macro by
@@ -6220,14 +6228,9 @@ def CIR_VAStartOp : CIR_Op<"va_start"> {
     cir.va_start %p : !cir.ptr<!rec___va_list_tag>
     ```
   }];
-  let arguments = (ins CIR_PointerType:$arg_list);
-
-  let assemblyFormat = [{
-    $arg_list attr-dict `:` type(operands)
-  }];
 }
 
-def CIR_VAEndOp : CIR_Op<"va_end"> {
+def CIR_VAEndOp : CIR_VAOp<"va_end"> {
   let summary = "Ends a variable argument list";
   let description = [{
     The `cir.va_end` operation models the C/C++ va_end macro by finalizing
@@ -6255,12 +6258,6 @@ def CIR_VAEndOp : CIR_Op<"va_end"> {
     cir.va_end %p : !cir.ptr<!rec___va_list_tag>
     ```
   }];
-
-  let arguments = (ins CIR_PointerType:$arg_list);
-
-  let assemblyFormat = [{
-    $arg_list attr-dict `:` type(operands)
-  }];
 }
 
 def CIR_VACopyOp : CIR_Op<"va_copy"> {


        


More information about the cfe-commits mailing list