1*610139d2SAlex Zinenko //===- RequestCWrappers.cpp - Annotate funcs with wrap attributes ---------===//
2*610139d2SAlex Zinenko //
3*610139d2SAlex Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*610139d2SAlex Zinenko // See https://llvm.org/LICENSE.txt for license information.
5*610139d2SAlex Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*610139d2SAlex Zinenko //
7*610139d2SAlex Zinenko //===----------------------------------------------------------------------===//
8*610139d2SAlex Zinenko 
9*610139d2SAlex Zinenko #include "mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h"
10*610139d2SAlex Zinenko #include "PassDetail.h"
11*610139d2SAlex Zinenko #include "mlir/Dialect/Func/IR/FuncOps.h"
12*610139d2SAlex Zinenko #include "mlir/Dialect/LLVMIR/LLVMDialect.h"
13*610139d2SAlex Zinenko 
14*610139d2SAlex Zinenko using namespace mlir;
15*610139d2SAlex Zinenko 
16*610139d2SAlex Zinenko namespace {
17*610139d2SAlex Zinenko class RequestCWrappersPass
18*610139d2SAlex Zinenko     : public LLVMRequestCWrappersBase<RequestCWrappersPass> {
19*610139d2SAlex Zinenko public:
runOnOperation()20*610139d2SAlex Zinenko   void runOnOperation() override {
21*610139d2SAlex Zinenko     getOperation()->setAttr(LLVM::LLVMDialect::getEmitCWrapperAttrName(),
22*610139d2SAlex Zinenko                             UnitAttr::get(&getContext()));
23*610139d2SAlex Zinenko   }
24*610139d2SAlex Zinenko };
25*610139d2SAlex Zinenko } // namespace
26*610139d2SAlex Zinenko 
createRequestCWrappersPass()27*610139d2SAlex Zinenko std::unique_ptr<Pass> mlir::LLVM::createRequestCWrappersPass() {
28*610139d2SAlex Zinenko   return std::make_unique<RequestCWrappersPass>();
29*610139d2SAlex Zinenko }
30