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
15namespace Fortran {
16
17namespace parser {
19struct ChangeTeamStmt;
21struct FormTeamStmt;
22} // namespace parser
23
24namespace evaluate {
25class CoarrayRef;
26} // namespace evaluate
27
28namespace lower {
29
30class SymMap;
31
32namespace pft {
33struct Evaluation;
34} // namespace pft
35
36//===----------------------------------------------------------------------===//
37// Synchronization statements
38//===----------------------------------------------------------------------===//
39
40void genSyncAllStatement(AbstractConverter &, const parser::SyncAllStmt &);
41
42void genSyncImagesStatement(AbstractConverter &,
43 const parser::SyncImagesStmt &);
44void genSyncMemoryStatement(AbstractConverter &,
45 const parser::SyncMemoryStmt &);
46void genSyncTeamStatement(AbstractConverter &, const parser::SyncTeamStmt &);
47
48//===----------------------------------------------------------------------===//
49// TEAM constructs
50//===----------------------------------------------------------------------===//
51
52void genChangeTeamConstruct(AbstractConverter &, pft::Evaluation &eval,
53 const parser::ChangeTeamConstruct &);
54void genChangeTeamStmt(AbstractConverter &, pft::Evaluation &eval,
55 const parser::ChangeTeamStmt &);
56void genEndChangeTeamStmt(AbstractConverter &, pft::Evaluation &eval,
57 const parser::EndChangeTeamStmt &);
58void genFormTeamStatement(AbstractConverter &, pft::Evaluation &eval,
59 const parser::FormTeamStmt &);
60
61//===----------------------------------------------------------------------===//
62// COARRAY expressions
63//===----------------------------------------------------------------------===//
64
68class CoarrayExprHelper {
69public:
70 explicit CoarrayExprHelper(AbstractConverter &converter, mlir::Location loc,
71 SymMap &syms)
72 : converter{converter}, symMap{syms}, loc{loc} {}
73 CoarrayExprHelper(const CoarrayExprHelper &) = delete;
74
77
80
81private:
82 AbstractConverter &converter;
83 SymMap &symMap;
84 mlir::Location loc;
85};
86
87} // namespace lower
88} // namespace Fortran
89
90#endif // FORTRAN_LOWER_MULTIIMAGEFORTRAN_H
Definition variable.h:243
Definition AbstractConverter.h:85
fir::ExtendedValue genAddr(const evaluate::CoarrayRef &expr)
Generate the address of a co-array expression.
Definition MultiImageFortran.cpp:269
fir::ExtendedValue genValue(const evaluate::CoarrayRef &expr)
Generate the value of a co-array expression.
Definition MultiImageFortran.cpp:275
Definition SymbolMap.h:146
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:2232
Definition parse-tree.h:2217
Definition parse-tree.h:2226
Definition parse-tree.h:2610