diff options
Diffstat (limited to 'mlir/lib/CAPI/Dialect/LLVM.cpp')
| -rw-r--r-- | mlir/lib/CAPI/Dialect/LLVM.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/mlir/lib/CAPI/Dialect/LLVM.cpp b/mlir/lib/CAPI/Dialect/LLVM.cpp index 03b536d7aad9..c7082445dd9c 100644 --- a/mlir/lib/CAPI/Dialect/LLVM.cpp +++ b/mlir/lib/CAPI/Dialect/LLVM.cpp @@ -303,9 +303,14 @@ MlirAttribute mlirLLVMDISubprogramAttrGet( MlirAttribute compileUnit, MlirAttribute scope, MlirAttribute name, MlirAttribute linkageName, MlirAttribute file, unsigned int line, unsigned int scopeLine, uint64_t subprogramFlags, MlirAttribute type, - intptr_t nRetainedNodes, MlirAttribute const *retainedNodes) { + intptr_t nRetainedNodes, MlirAttribute const *retainedNodes, + intptr_t nAnnotations, MlirAttribute const *annotations) { SmallVector<Attribute> nodesStorage; nodesStorage.reserve(nRetainedNodes); + + SmallVector<Attribute> annotationsStorage; + annotationsStorage.reserve(nAnnotations); + return wrap(DISubprogramAttr::get( unwrap(ctx), cast<DistinctAttr>(unwrap(recId)), isRecSelf, cast<DistinctAttr>(unwrap(id)), @@ -316,6 +321,9 @@ MlirAttribute mlirLLVMDISubprogramAttrGet( cast<DISubroutineTypeAttr>(unwrap(type)), llvm::map_to_vector( unwrapList(nRetainedNodes, retainedNodes, nodesStorage), + [](Attribute a) { return cast<DINodeAttr>(a); }), + llvm::map_to_vector( + unwrapList(nAnnotations, annotations, annotationsStorage), [](Attribute a) { return cast<DINodeAttr>(a); }))); } @@ -375,3 +383,9 @@ MlirAttribute mlirLLVMDIImportedEntityAttrGet( llvm::map_to_vector(unwrapList(nElements, elements, elementsStorage), [](Attribute a) { return cast<DINodeAttr>(a); }))); } + +MlirAttribute mlirLLVMDIAnnotationAttrGet(MlirContext ctx, MlirAttribute name, + MlirAttribute value) { + return wrap(DIAnnotationAttr::get(unwrap(ctx), cast<StringAttr>(unwrap(name)), + cast<StringAttr>(unwrap(value)))); +} |
