================ @@ -496,6 +496,46 @@ def CIR_GlobalViewAttr : CIR_Attr<"GlobalView", "global_view", [ }]; } +//===----------------------------------------------------------------------===// +// VTableAttr +//===----------------------------------------------------------------------===// + +def VTableAttr : CIR_Attr<"VTable", "vtable", [TypedAttrInterface]> { + let summary = "Represents a C++ vtable"; + let description = [{ + Wraps a #cir.const_record containing vtable data. + + Example: + ``` + cir.global linkonce_odr @_ZTV1B = #cir.vtable<< + {#cir.const_array<[#cir.null : !cir.ptr<i8>, + #cir.global_view<@_ZTI1B> : !cir.ptr<i8>, + #cir.global_view<@_ZN1BD1Ev> : !cir.ptr<i8>, + #cir.global_view<@_ZN1BD0Ev> : !cir.ptr<i8>, + #cir.global_view<@_ZNK1A5quackEv> : !cir.ptr<i8>]> + : !cir.array<!cir.ptr<i8> x 5>}>> + : !cir.record<"", !cir.array<!cir.ptr<i8> x 5>> + ``` + }]; + + // `vtable_data` is a const record with one element, containing an array of ---------------- xlauko wrote:
Same here, it is not const_record but ArrayAttr? Wasn't the intent to say `vtable_data` is a single element of vtable const record? https://github.com/llvm/llvm-project/pull/154415 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits