1*f8843efbSSlava Zakharin //===-- Pointer.cpp -- generate pointer runtime API calls------------------===//
2*f8843efbSSlava Zakharin //
3*f8843efbSSlava Zakharin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*f8843efbSSlava Zakharin // See https://llvm.org/LICENSE.txt for license information.
5*f8843efbSSlava Zakharin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*f8843efbSSlava Zakharin //
7*f8843efbSSlava Zakharin //===----------------------------------------------------------------------===//
8*f8843efbSSlava Zakharin
9*f8843efbSSlava Zakharin #include "flang/Optimizer/Builder/Runtime/Pointer.h"
10*f8843efbSSlava Zakharin #include "flang/Optimizer/Builder/FIRBuilder.h"
11*f8843efbSSlava Zakharin #include "flang/Optimizer/Builder/Runtime/RTBuilder.h"
12*f8843efbSSlava Zakharin #include "flang/Runtime/pointer.h"
13*f8843efbSSlava Zakharin
14*f8843efbSSlava Zakharin using namespace Fortran::runtime;
15*f8843efbSSlava Zakharin
genPointerAssociateScalar(fir::FirOpBuilder & builder,mlir::Location loc,mlir::Value desc,mlir::Value target)16*f8843efbSSlava Zakharin void fir::runtime::genPointerAssociateScalar(fir::FirOpBuilder &builder,
17*f8843efbSSlava Zakharin mlir::Location loc,
18*f8843efbSSlava Zakharin mlir::Value desc,
19*f8843efbSSlava Zakharin mlir::Value target) {
20*f8843efbSSlava Zakharin mlir::func::FuncOp func{
21*f8843efbSSlava Zakharin fir::runtime::getRuntimeFunc<mkRTKey(PointerAssociateScalar)>(loc,
22*f8843efbSSlava Zakharin builder)};
23*f8843efbSSlava Zakharin mlir::FunctionType fTy{func.getFunctionType()};
24*f8843efbSSlava Zakharin llvm::SmallVector<mlir::Value> args{
25*f8843efbSSlava Zakharin fir::runtime::createArguments(builder, loc, fTy, desc, target)};
26*f8843efbSSlava Zakharin builder.create<fir::CallOp>(loc, func, args);
27*f8843efbSSlava Zakharin }
28