FLANG
PFTDefs.h
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/SetVector.h"
18#include "llvm/ADT/SmallSet.h"
19#include "llvm/ADT/StringRef.h"
20
21namespace mlir {
22class Block;
23}
24
25namespace Fortran {
26namespace semantics {
27class Symbol;
29class Scope;
30} // namespace semantics
31
32namespace evaluate {
33template <typename A>
34class Expr;
35struct SomeType;
36} // namespace evaluate
37
38namespace common {
39template <typename A>
40class Reference;
41}
42
43namespace lower {
44
45bool definedInCommonBlock(const semantics::Symbol &sym);
46bool symbolIsGlobal(const semantics::Symbol &sym);
47bool defaultRecursiveFunctionSetting();
48
49namespace pft {
50
51struct Evaluation;
52
53using SomeExpr = Fortran::evaluate::Expr<Fortran::evaluate::SomeType>;
54using SymbolRef = Fortran::common::Reference<const Fortran::semantics::Symbol>;
55using Label = std::uint64_t;
56using LabelSet = llvm::SmallSet<Label, 4>;
57using SymbolLabelMap = llvm::DenseMap<SymbolRef, LabelSet>;
58using LabelEvalMap = llvm::DenseMap<Label, Evaluation *>;
59using IncomingBranchMap =
60 llvm::DenseMap<const Evaluation *, llvm::SmallSetVector<Evaluation *, 2>>;
61
62} // namespace pft
63} // namespace lower
64} // namespace Fortran
65
66#endif // FORTRAN_LOWER_PFTDEFS_H
Definition reference.h:18
Definition common.h:215
Definition scope.h:68
Definition semantics.h:71
Definition symbol.h:916
Definition bit-population-count.h:20
Definition call.h:34
Definition ParserActions.h:24
bool symbolIsGlobal(const semantics::Symbol &sym)
Is the symbol sym a global?
Definition PFTBuilder.cpp:1780
Definition bit-population-count.h:20
Definition AbstractConverter.h:32
Definition type.h:422
Definition PFTBuilder.h:222