[llvm-branch-commits] [clang] [CIR] Add CIRGen support for static local variables with non-constant initializers (PR #179827)
Bruno Cardoso Lopes via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Feb 10 23:01:58 PST 2026
================
@@ -1286,5 +1288,52 @@ def CIR_SideEffect : CIR_I32EnumAttr<
}];
}
+//===----------------------------------------------------------------------===//
+// AST Wrappers
+//===----------------------------------------------------------------------===//
+
+class CIR_AST<string name, string prefix, list<Trait> traits = []>
+ : CIR_Attr<!strconcat("AST", name), !strconcat(prefix, ".ast"), traits> {
+ string clang_name = !strconcat("const clang::", name, " *");
+
+ let summary = !strconcat("Wraps a '", clang_name, "' AST node.");
+ let description = [{
+ Operations optionally refer to this node, they could be available depending
+ on the CIR lowering stage. Whether it's attached to the appropriated
+ CIR operation is delegated to the operation verifier.
+
+ This always implies a non-null AST reference (verified).
+ }];
+ let parameters = (ins clang_name:$ast);
+
+ // Printing and parsing available in CIRDialect.cpp
+ let hasCustomAssemblyFormat = 1;
+
+ // Enable verifier.
+ let genVerifyDecl = 1;
+
+ let extraClassDefinition = [{
+ ::mlir::Attribute $cppClass::parse(::mlir::AsmParser &parser,
+ ::mlir::Type type) {
+ // We cannot really parse anything AST related at this point
+ // since we have no serialization/JSON story.
+ return $cppClass::get(parser.getContext(), nullptr);
+ }
+
+ void $cppClass::print(::mlir::AsmPrinter &printer) const {
+ // Nothing to print besides the mnemonics.
+ }
+
+ llvm::LogicalResult $cppClass::verify(
----------------
bcardosolopes wrote:
left over from experiment, removed.
https://github.com/llvm/llvm-project/pull/179827
More information about the llvm-branch-commits
mailing list