xref: /llvm-project/flang/lib/Optimizer/Builder/Runtime/Pointer.cpp (revision f8843efbb2190db85c696001ffd6211a2c20ac37)
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