13#ifndef FORTRAN_LOWER_ALLOCATABLE_H
14#define FORTRAN_LOWER_ALLOCATABLE_H
16#include "flang/Lower/AbstractConverter.h"
17#include "flang/Optimizer/Builder/MutableBox.h"
18#include "flang/Runtime/allocator-registry-consts.h"
19#include "llvm/ADT/StringRef.h"
47bool isArraySectionWithoutVectorSubscript(
const SomeExpr &expr);
51 const parser::AllocateStmt &stmt, mlir::Location loc);
55 const parser::DeallocateStmt &stmt, mlir::Location loc);
58 const fir::MutableBoxValue &box, mlir::Location loc,
59 const Fortran::semantics::Symbol *sym =
nullptr,
60 mlir::Value declaredTypeDesc = {});
64 const fir::MutableBoxValue &box,
66 const Fortran::semantics::Symbol *sym =
nullptr);
74 mlir::ValueRange nonDeferredParams,
bool alwaysUseBox,
75 unsigned allocator = kDefaultAllocator);
82 const fir::MutableBoxValue &box,
83 const SomeExpr &source, mlir::ValueRange lbounds,
95 fir::FirOpBuilder &builder, mlir::Location loc,
96 const Fortran::semantics::Symbol &sym, mlir::Value box);
101 const Fortran::semantics::DerivedTypeSpec &typeSpec);
Definition AbstractConverter.h:85
Definition StatementContext.h:46
Definition FIRBuilder.h:55
Definition ParserActions.h:24
fir::MutableBoxValue createMutableBox(AbstractConverter &converter, mlir::Location loc, const pft::Variable &var, mlir::Value boxAddr, mlir::ValueRange nonDeferredParams, bool alwaysUseBox, unsigned allocator=kDefaultAllocator)
Definition Allocatable.cpp:1093
void associateMutableBox(AbstractConverter &converter, mlir::Location loc, const fir::MutableBoxValue &box, const SomeExpr &source, mlir::ValueRange lbounds, StatementContext &stmtCtx)
Definition Allocatable.cpp:1119
mlir::Value getTypeDescAddr(AbstractConverter &converter, mlir::Location loc, const Fortran::semantics::DerivedTypeSpec &typeSpec)
Retrieve the address of a type descriptor from its derived type spec.
Definition Allocatable.cpp:1194
bool isWholePointer(const SomeExpr &expr)
Is expr a reference to an entity with the POINTER attribute?
Definition Allocatable.cpp:1154
void genDeallocateStmt(AbstractConverter &converter, const parser::DeallocateStmt &stmt, mlir::Location loc)
Lower a deallocate statement to fir.
Definition Allocatable.cpp:936
void genDeallocateIfAllocated(AbstractConverter &converter, const fir::MutableBoxValue &box, mlir::Location loc, const Fortran::semantics::Symbol *sym=nullptr)
Deallocate an allocatable if it is allocated at the end of its lifetime.
Definition Allocatable.cpp:915
bool isWholeAllocatable(const SomeExpr &expr)
Is expr a reference to an entity with the ALLOCATABLE attribute?
Definition Allocatable.cpp:1147
mlir::Value getAssumedCharAllocatableOrPointerLen(fir::FirOpBuilder &builder, mlir::Location loc, const Fortran::semantics::Symbol &sym, mlir::Value box)
Definition Allocatable.cpp:1161
void genAllocateStmt(AbstractConverter &converter, const parser::AllocateStmt &stmt, mlir::Location loc)
Lower an allocate statement to fir.
Definition Allocatable.cpp:816
Definition check-expression.h:19
Definition bit-population-count.h:20
Definition AbstractConverter.h:34
Definition AbstractConverter.h:29
Definition SymbolMap.h:52
Definition PFTBuilder.h:410
Definition parse-tree.h:1990
Definition parse-tree.h:2010