File indexing completed on 2026-05-10 08:43:36
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_CODEGEN_TAILDUPLICATIONPASS_H
0010 #define LLVM_CODEGEN_TAILDUPLICATIONPASS_H
0011
0012 #include "llvm/CodeGen/MBFIWrapper.h"
0013 #include "llvm/CodeGen/MachineFunction.h"
0014 #include "llvm/CodeGen/MachinePassManager.h"
0015
0016 namespace llvm {
0017
0018 template <typename DerivedT, bool PreRegAlloc>
0019 class TailDuplicatePassBase : public PassInfoMixin<DerivedT> {
0020 private:
0021 std::unique_ptr<MBFIWrapper> MBFIW;
0022
0023 public:
0024 PreservedAnalyses run(MachineFunction &MF,
0025 MachineFunctionAnalysisManager &MFAM);
0026 };
0027
0028 class EarlyTailDuplicatePass
0029 : public TailDuplicatePassBase<EarlyTailDuplicatePass, true> {
0030 public:
0031 MachineFunctionProperties getClearedProperties() const {
0032 return MachineFunctionProperties().set(
0033 MachineFunctionProperties::Property::NoPHIs);
0034 }
0035 };
0036
0037 class TailDuplicatePass
0038 : public TailDuplicatePassBase<TailDuplicatePass, false> {};
0039
0040 }
0041
0042 extern template class llvm::TailDuplicatePassBase<llvm::EarlyTailDuplicatePass,
0043 true>;
0044 extern template class llvm::TailDuplicatePassBase<llvm::TailDuplicatePass,
0045 false>;
0046
0047 #endif