1321369Sdim//===- ScheduleDAGMutation.h - MachineInstr Scheduling ----------*- C++ -*-===//
2303231Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6303231Sdim//
7303231Sdim//===----------------------------------------------------------------------===//
8303231Sdim//
9303231Sdim// This file implements the ScheduleDAGMutation class, which represents
10303231Sdim// a target-specific mutation of the dependency graph for scheduling.
11303231Sdim//
12303231Sdim//===----------------------------------------------------------------------===//
13303231Sdim
14303231Sdim#ifndef LLVM_CODEGEN_SCHEDULEDAGMUTATION_H
15303231Sdim#define LLVM_CODEGEN_SCHEDULEDAGMUTATION_H
16303231Sdim
17303231Sdimnamespace llvm {
18303231Sdim
19321369Sdimclass ScheduleDAGInstrs;
20303231Sdim
21321369Sdim/// Mutate the DAG as a postpass after normal DAG building.
22321369Sdimclass ScheduleDAGMutation {
23321369Sdim  virtual void anchor();
24303231Sdim
25321369Sdimpublic:
26321369Sdim  virtual ~ScheduleDAGMutation() = default;
27321369Sdim
28321369Sdim  virtual void apply(ScheduleDAGInstrs *DAG) = 0;
29321369Sdim};
30321369Sdim
31321369Sdim} // end namespace llvm
32321369Sdim
33321369Sdim#endif // LLVM_CODEGEN_SCHEDULEDAGMUTATION_H
34