|
FLANG
|
#include "flang/Optimizer/Builder/DirectivesCommon.h"#include "flang/Optimizer/Builder/FIRBuilder.h"#include "flang/Optimizer/Builder/HLFIRTools.h"#include "flang/Optimizer/Dialect/FIRType.h"#include "flang/Optimizer/Dialect/Support/KindMapping.h"#include "flang/Optimizer/HLFIR/HLFIROps.h"#include "flang/Optimizer/OpenMP/Passes.h"#include "mlir/Analysis/SliceAnalysis.h"#include "mlir/Dialect/Func/IR/FuncOps.h"#include "mlir/Dialect/OpenMP/OpenMPDialect.h"#include "mlir/IR/BuiltinDialect.h"#include "mlir/IR/BuiltinOps.h"#include "mlir/IR/Operation.h"#include "mlir/IR/SymbolTable.h"#include "mlir/Pass/Pass.h"#include "mlir/Support/LLVM.h"#include "llvm/ADT/BitmaskEnum.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/StringSet.h"#include "llvm/Support/raw_ostream.h"#include <algorithm>#include <cstddef>#include <iterator>#include <numeric>#include "flang/Optimizer/OpenMP/Passes.h.inc"Macros | |
| #define | DEBUG_TYPE "omp-map-info-finalization" |
| #define | GEN_PASS_DEF_MAPINFOFINALIZATIONPASS |
An OpenMP dialect related pass for FIR/HLFIR which performs some pre-processing of MapInfoOp's after the module has been lowered to finalize them.
For example, it expands MapInfoOp's containing descriptor related types (fir::BoxType's) into multiple MapInfoOp's containing the parent descriptor and pointer member components for individual mapping, treating the descriptor type as a record type for later lowering in the OpenMP dialect.
The pass also adds MapInfoOp's that are members of a parent object but are not directly used in the body of a target region to its BlockArgument list to maintain consistency across all MapInfoOp's tied to a region directly or indirectly via a parent object.