Warning: This file is not a C or C++ file. It does not have highlighting.

1//===-- Lower/PFTDefs.h -- shared PFT info ----------------------*- 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// Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef FORTRAN_LOWER_PFTDEFS_H
14#define FORTRAN_LOWER_PFTDEFS_H
15
16#include "llvm/ADT/DenseMap.h"
17#include "llvm/ADT/SmallSet.h"
18#include "llvm/ADT/StringRef.h"
19
20namespace mlir {
21class Block;
22}
23
24namespace Fortran {
25namespace semantics {
26class Symbol;
27class SemanticsContext;
28class Scope;
29} // namespace semantics
30
31namespace evaluate {
32template <typename A>
33class Expr;
34struct SomeType;
35} // namespace evaluate
36
37namespace common {
38template <typename A>
39class Reference;
40}
41
42namespace lower {
43
44bool definedInCommonBlock(const semantics::Symbol &sym);
45bool symbolIsGlobal(const semantics::Symbol &sym);
46bool defaultRecursiveFunctionSetting();
47
48namespace pft {
49
50struct Evaluation;
51
52using SomeExpr = Fortran::evaluate::Expr<Fortran::evaluate::SomeType>;
53using SymbolRef = Fortran::common::Reference<const Fortran::semantics::Symbol>;
54using Label = std::uint64_t;
55using LabelSet = llvm::SmallSet<Label, 4>;
56using SymbolLabelMap = llvm::DenseMap<SymbolRef, LabelSet>;
57using LabelEvalMap = llvm::DenseMap<Label, Evaluation *>;
58
59} // namespace pft
60} // namespace lower
61} // namespace Fortran
62
63#endif // FORTRAN_LOWER_PFTDEFS_H
64

Warning: This file is not a C or C++ file. It does not have highlighting.

source code of flang/include/flang/Lower/PFTDefs.h