diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-18 20:30:12 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-19 21:23:40 +0000 |
commit | bdbe302c3396ceb4dd89d1214485439598f05368 (patch) | |
tree | ccf66c6349b23061ed5e9645c21f15fbe718da8b /contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp | |
parent | e7a1904fe1ced461b2a31f03b6592ae6564a243a (diff) |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp b/contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp index 88939e96e07f..57af571ed9bf 100644 --- a/contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp +++ b/contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp @@ -32,6 +32,7 @@ #include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/PseudoSourceValue.h" +#include "llvm/CodeGen/PseudoSourceValueManager.h" #include "llvm/CodeGen/TargetFrameLowering.h" #include "llvm/CodeGen/TargetInstrInfo.h" #include "llvm/CodeGen/TargetLowering.h" @@ -178,6 +179,12 @@ void MachineFunction::handleRemoval(MachineInstr &MI) { TheDelegate->MF_HandleRemoval(MI); } +void MachineFunction::handleChangeDesc(MachineInstr &MI, + const MCInstrDesc &TID) { + if (TheDelegate) + TheDelegate->MF_HandleChangeDesc(MI, TID); +} + void MachineFunction::init() { // Assume the function starts in SSA form with correct liveness. Properties.set(MachineFunctionProperties::Property::IsSSA); @@ -451,16 +458,17 @@ void MachineFunction::deleteMachineInstr(MachineInstr *MI) { /// Allocate a new MachineBasicBlock. Use this instead of /// `new MachineBasicBlock'. MachineBasicBlock * -MachineFunction::CreateMachineBasicBlock(const BasicBlock *bb) { +MachineFunction::CreateMachineBasicBlock(const BasicBlock *BB, + std::optional<UniqueBBID> BBID) { MachineBasicBlock *MBB = new (BasicBlockRecycler.Allocate<MachineBasicBlock>(Allocator)) - MachineBasicBlock(*this, bb); + MachineBasicBlock(*this, BB); // Set BBID for `-basic-block=sections=labels` and // `-basic-block-sections=list` to allow robust mapping of profiles to basic // blocks. if (Target.getBBSectionsType() == BasicBlockSection::Labels || Target.getBBSectionsType() == BasicBlockSection::List) - MBB->setBBID(NextBBID++); + MBB->setBBID(BBID.has_value() ? *BBID : UniqueBBID{NextBBID++, 0}); return MBB; } @@ -1206,7 +1214,7 @@ bool MachineFunction::shouldUseDebugInstrRef() const { // have optimized code inlined into this unoptimized code, however with // fewer and less aggressive optimizations happening, coverage and accuracy // should not suffer. - if (getTarget().getOptLevel() == CodeGenOpt::None) + if (getTarget().getOptLevel() == CodeGenOptLevel::None) return false; // Don't use instr-ref if this function is marked optnone. @@ -1244,6 +1252,7 @@ unsigned MachineJumpTableInfo::getEntrySize(const DataLayout &TD) const { case MachineJumpTableInfo::EK_BlockAddress: return TD.getPointerSize(); case MachineJumpTableInfo::EK_GPRel64BlockAddress: + case MachineJumpTableInfo::EK_LabelDifference64: return 8; case MachineJumpTableInfo::EK_GPRel32BlockAddress: case MachineJumpTableInfo::EK_LabelDifference32: @@ -1264,6 +1273,7 @@ unsigned MachineJumpTableInfo::getEntryAlignment(const DataLayout &TD) const { case MachineJumpTableInfo::EK_BlockAddress: return TD.getPointerABIAlignment(0).value(); case MachineJumpTableInfo::EK_GPRel64BlockAddress: + case MachineJumpTableInfo::EK_LabelDifference64: return TD.getABIIntegerTypeAlignment(64).value(); case MachineJumpTableInfo::EK_GPRel32BlockAddress: case MachineJumpTableInfo::EK_LabelDifference32: |