9#ifndef FORTRAN_COMMON_OPENMP_UTILS_H_
10#define FORTRAN_COMMON_OPENMP_UTILS_H_
12#include "flang/Semantics/symbol.h"
14#include "mlir/IR/Builders.h"
15#include "mlir/IR/Value.h"
17#include "llvm/ADT/ArrayRef.h"
19namespace Fortran::common::openmp {
26 bool isValid()
const {
30 return syms.size() <= vars.size();
46 bool isValid()
const {
47 return inReduction.isValid() && map.isValid() && priv.isValid() &&
48 reduction.isValid() && taskReduction.isValid() &&
49 useDeviceAddr.isValid() && useDevicePtr.isValid();
52 auto getSyms()
const {
53 return llvm::concat<const semantics::Symbol *const>(inReduction.syms,
54 map.syms, priv.syms, reduction.syms, taskReduction.syms,
55 useDeviceAddr.syms, useDevicePtr.syms);
58 auto getVars()
const {
59 return llvm::concat<const mlir::Value>(hostEvalVars, inReduction.vars,
60 map.vars, priv.vars, reduction.vars, taskReduction.vars,
61 useDeviceAddr.vars, useDevicePtr.vars);
72mlir::Block *genEntryBlock(
73 mlir::OpBuilder &builder,
const EntryBlockArgs &args, mlir::Region ®ion);
Definition: OpenMP-utils.h:22
Definition: OpenMP-utils.h:36