1356843Sdim//===- MachineSizeOpts.h - machine size optimization ------------*- C++ -*-===//
2356843Sdim//
3356843Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4356843Sdim// See https://llvm.org/LICENSE.txt for license information.
5356843Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6356843Sdim//
7356843Sdim//===----------------------------------------------------------------------===//
8356843Sdim//
9356843Sdim// This file contains some shared machine IR code size optimization related
10356843Sdim// code.
11356843Sdim//
12356843Sdim//===----------------------------------------------------------------------===//
13356843Sdim#ifndef LLVM_CODEGEN_MACHINE_SIZEOPTS_H
14356843Sdim#define LLVM_CODEGEN_MACHINE_SIZEOPTS_H
15356843Sdim
16356843Sdim#include "llvm/Transforms/Utils/SizeOpts.h"
17356843Sdim
18356843Sdimnamespace llvm {
19356843Sdim
20356843Sdimclass ProfileSummaryInfo;
21356843Sdimclass MachineBasicBlock;
22356843Sdimclass MachineBlockFrequencyInfo;
23356843Sdimclass MachineFunction;
24356843Sdim
25356843Sdim/// Returns true if machine function \p MF is suggested to be size-optimized
26356843Sdim/// based on the profile.
27356843Sdimbool shouldOptimizeForSize(const MachineFunction *MF, ProfileSummaryInfo *PSI,
28356843Sdim                           const MachineBlockFrequencyInfo *BFI,
29356843Sdim                           PGSOQueryType QueryType = PGSOQueryType::Other);
30356843Sdim/// Returns true if machine basic block \p MBB is suggested to be size-optimized
31356843Sdim/// based on the profile.
32356843Sdimbool shouldOptimizeForSize(const MachineBasicBlock *MBB,
33356843Sdim                           ProfileSummaryInfo *PSI,
34356843Sdim                           const MachineBlockFrequencyInfo *MBFI,
35356843Sdim                           PGSOQueryType QueryType = PGSOQueryType::Other);
36356843Sdim
37356843Sdim} // end namespace llvm
38356843Sdim
39356843Sdim#endif // LLVM_CODEGEN_MACHINE_SIZEOPTS_H
40