FLANG
ScheduleOrderedAssignments.h
1//===- ScheduleOrderedAssignments.h --- Assignment scheduling ---*- 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// This file defines a utility to analyze and schedule the evaluation of
9// of hlfir::OrderedAssignmentTreeOpInterface trees that represent Fortran
10// Forall, Where, user defined assignments and assignments to vector
11// subscripted entities.
12//===----------------------------------------------------------------------===//
13
14#ifndef OPTIMIZER_HLFIR_TRANSFORM_SCHEDULEORDEREDASSIGNMENTS_H
15#define OPTIMIZER_HLFIR_TRANSFORM_SCHEDULEORDEREDASSIGNMENTS_H
16
17#include "flang/Optimizer/HLFIR/HLFIROps.h"
18
19namespace hlfir {
20
26struct SaveEntity {
27 mlir::Region *yieldRegion;
29 mlir::Value getSavedValue();
30};
31
40struct Run {
43 using Action = std::variant<hlfir::RegionAssignOp, SaveEntity>;
46};
47
50
85
92Schedule buildEvaluationSchedule(hlfir::OrderedAssignmentTreeOpInterface root,
93 bool tryFusingAssignments);
94
95} // namespace hlfir
96#endif // OPTIMIZER_HLFIR_TRANSFORM_SCHEDULEORDERASSIGNMENTS_H
Definition: OpenACC.h:20
Definition: ScheduleOrderedAssignments.h:40
std::variant< hlfir::RegionAssignOp, SaveEntity > Action
Definition: ScheduleOrderedAssignments.h:43
Definition: ScheduleOrderedAssignments.h:26
mlir::Value getSavedValue()
Returns the hlfir.yield op argument.
Definition: ScheduleOrderedAssignments.cpp:618