FLANG
MultiImageFortran.h
1//===-- Lower/MultiImageFortran.h -- image related lowering -----*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef FORTRAN_LOWER_MULTIIMAGEFORTRAN_H
10#define FORTRAN_LOWER_MULTIIMAGEFORTRAN_H
11
12#include "flang/Lower/AbstractConverter.h"
13#include "flang/Optimizer/Builder/BoxValue.h"
14#include "flang/Optimizer/Dialect/MIF/MIFOps.h"
15
16namespace Fortran {
17
18namespace parser {
20struct ChangeTeamStmt;
22struct FormTeamStmt;
23} // namespace parser
24
25namespace evaluate {
26class CoarrayRef;
27} // namespace evaluate
28
29namespace lower {
30
31class SymMap;
32
33namespace pft {
34struct Evaluation;
35} // namespace pft
36
37//===----------------------------------------------------------------------===//
38// Synchronization statements
39//===----------------------------------------------------------------------===//
40
41void genSyncAllStatement(AbstractConverter &, const parser::SyncAllStmt &);
42
43void genSyncImagesStatement(AbstractConverter &,
44 const parser::SyncImagesStmt &);
45void genSyncMemoryStatement(AbstractConverter &,
46 const parser::SyncMemoryStmt &);
47void genSyncTeamStatement(AbstractConverter &, const parser::SyncTeamStmt &);
48
49//===----------------------------------------------------------------------===//
50// TEAM constructs
51//===----------------------------------------------------------------------===//
52
53void genChangeTeamConstruct(AbstractConverter &, pft::Evaluation &eval,
54 const parser::ChangeTeamConstruct &);
55mif::ChangeTeamOp genChangeTeamStmt(AbstractConverter &, pft::Evaluation &eval,
56 const parser::ChangeTeamStmt &);
57void genEndChangeTeamStmt(AbstractConverter &, pft::Evaluation &eval,
58 const parser::EndChangeTeamStmt &);
59void genFormTeamStatement(AbstractConverter &, pft::Evaluation &eval,
60 const parser::FormTeamStmt &);
61
62//===----------------------------------------------------------------------===//
63// COARRAY expressions
64//===----------------------------------------------------------------------===//
65
69class CoarrayExprHelper {
70public:
71 explicit CoarrayExprHelper(AbstractConverter &converter, mlir::Location loc,
72 SymMap &syms)
73 : converter{converter}, symMap{syms}, loc{loc} {}
74 CoarrayExprHelper(const CoarrayExprHelper &) = delete;
75
78
81
82private:
83 AbstractConverter &converter;
84 SymMap &symMap;
85 mlir::Location loc;
86};
87
88} // namespace lower
89} // namespace Fortran
90
91#endif // FORTRAN_LOWER_MULTIIMAGEFORTRAN_H
Definition variable.h:243
Definition AbstractConverter.h:87
fir::ExtendedValue genAddr(const evaluate::CoarrayRef &expr)
Generate the address of a co-array expression.
Definition MultiImageFortran.cpp:264
fir::ExtendedValue genValue(const evaluate::CoarrayRef &expr)
Generate the value of a co-array expression.
Definition MultiImageFortran.cpp:270
Definition SymbolMap.h:182
Definition BoxValue.h:478
Definition call.h:34
Definition ParserActions.h:24
Definition check-expression.h:19
Definition bit-population-count.h:20
Definition PFTBuilder.h:221
Definition parse-tree.h:2199
Definition parse-tree.h:2184
Definition parse-tree.h:2193
Definition parse-tree.h:2576