| //===- MachineSizeOpts.h - machine size optimization ------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file contains some shared machine IR code size optimization related |
| // code. |
| // |
| //===----------------------------------------------------------------------===// |
| #ifndef LLVM_CODEGEN_MACHINESIZEOPTS_H |
| #define LLVM_CODEGEN_MACHINESIZEOPTS_H |
| |
| #include "llvm/Transforms/Utils/SizeOpts.h" |
| |
| namespace llvm { |
| |
| class ProfileSummaryInfo; |
| class MachineBasicBlock; |
| class MachineBlockFrequencyInfo; |
| class MachineFunction; |
| class MBFIWrapper; |
| |
| /// Returns true if machine function \p MF is suggested to be size-optimized |
| /// based on the profile. |
| bool shouldOptimizeForSize(const MachineFunction *MF, ProfileSummaryInfo *PSI, |
| const MachineBlockFrequencyInfo *BFI, |
| PGSOQueryType QueryType = PGSOQueryType::Other); |
| /// Returns true if machine basic block \p MBB is suggested to be size-optimized |
| /// based on the profile. |
| bool shouldOptimizeForSize(const MachineBasicBlock *MBB, |
| ProfileSummaryInfo *PSI, |
| const MachineBlockFrequencyInfo *MBFI, |
| PGSOQueryType QueryType = PGSOQueryType::Other); |
| /// Returns true if machine basic block \p MBB is suggested to be size-optimized |
| /// based on the profile. |
| bool shouldOptimizeForSize(const MachineBasicBlock *MBB, |
| ProfileSummaryInfo *PSI, |
| MBFIWrapper *MBFIWrapper, |
| PGSOQueryType QueryType = PGSOQueryType::Other); |
| |
| } // end namespace llvm |
| |
| #endif // LLVM_CODEGEN_MACHINESIZEOPTS_H |