Skip to content
Merged
3 changes: 3 additions & 0 deletions llvm/include/llvm/Target/TargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,9 @@ class LLVMTargetMachine : public TargetMachine {

void initAsmInfo();

/// Reset internal state.
virtual void reset() {};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be pure virtual since every target needs to implement this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good point! Trying to balance all the review comments I got and I think I'll remove the implementation from the backend that I don't particularly care about and leave them with the default implementation here as a no-op and can always overload with specific implementations should the need arises in the future.


public:
/// Get a TargetTransformInfo implementation for the target.
///
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Target() {
initializeAArch64GlobalsTaggingPass(*PR);
}

void AArch64TargetMachine::reset() { SubtargetMap.clear(); }

//===----------------------------------------------------------------------===//
// AArch64 Lowering public interface.
//===----------------------------------------------------------------------===//
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/AArch64/AArch64TargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ class AArch64TargetMachine : public LLVMTargetMachine {
std::unique_ptr<TargetLoweringObjectFile> TLOF;
mutable StringMap<std::unique_ptr<AArch64Subtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
AArch64TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -953,6 +953,8 @@ bool AMDGPUTargetMachine::splitModule(
// GCN Target Machine (SI+)
//===----------------------------------------------------------------------===//

void GCNTargetMachine::reset() { SubtargetMap.clear(); };

GCNTargetMachine::GCNTargetMachine(const Target &T, const Triple &TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ class GCNTargetMachine final : public AMDGPUTargetMachine {
private:
mutable StringMap<std::unique_ptr<GCNSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
GCNTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/AMDGPU/R600TargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ static MachineSchedRegistry R600SchedRegistry("r600",
// R600 Target Machine (R600 -> Cayman)
//===----------------------------------------------------------------------===//

void R600TargetMachine::reset() { SubtargetMap.clear(); }

R600TargetMachine::R600TargetMachine(const Target &T, const Triple &TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/AMDGPU/R600TargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ class R600TargetMachine final : public AMDGPUTargetMachine {
private:
mutable StringMap<std::unique_ptr<R600Subtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
R600TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/ARM/ARMTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -642,3 +642,5 @@ bool ARMBaseTargetMachine::parseMachineFunctionInfo(
MF.getInfo<ARMFunctionInfo>()->initializeBaseYamlFields(YamlMFI);
return false;
}

void ARMBaseTargetMachine::reset() { SubtargetMap.clear(); }
3 changes: 3 additions & 0 deletions llvm/lib/Target/ARM/ARMTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ class ARMBaseTargetMachine : public LLVMTargetMachine {
bool isLittle;
mutable StringMap<std::unique_ptr<ARMSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
ARMBaseTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/CSKY/CSKYTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ MachineFunctionInfo *CSKYTargetMachine::createMachineFunctionInfo(
STI);
}

void CSKYTargetMachine::reset() { SubtargetMap.clear(); }

namespace {
class CSKYPassConfig : public TargetPassConfig {
public:
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/CSKY/CSKYTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ class CSKYTargetMachine : public LLVMTargetMachine {
std::unique_ptr<TargetLoweringObjectFile> TLOF;
mutable StringMap<std::unique_ptr<CSKYSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
CSKYTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,8 @@ MachineFunctionInfo *HexagonTargetMachine::createMachineFunctionInfo(

HexagonTargetMachine::~HexagonTargetMachine() = default;

void HexagonTargetMachine::reset() { SubtargetMap.clear(); }

namespace {
/// Hexagon Code Generator Pass Configuration Options.
class HexagonPassConfig : public TargetPassConfig {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/Hexagon/HexagonTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ class HexagonTargetMachine : public LLVMTargetMachine {
HexagonSubtarget Subtarget;
mutable StringMap<std::unique_ptr<HexagonSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
HexagonTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ MachineFunctionInfo *LoongArchTargetMachine::createMachineFunctionInfo(
Allocator, F, STI);
}

void LoongArchTargetMachine::reset() { SubtargetMap.clear(); }

namespace {
class LoongArchPassConfig : public TargetPassConfig {
public:
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/LoongArch/LoongArchTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ class LoongArchTargetMachine : public LLVMTargetMachine {
std::unique_ptr<TargetLoweringObjectFile> TLOF;
mutable StringMap<std::unique_ptr<LoongArchSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
LoongArchTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/M68k/M68kTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ MachineFunctionInfo *M68kTargetMachine::createMachineFunctionInfo(
STI);
}

void M68kTargetMachine::reset() { SubtargetMap.clear(); }

//===----------------------------------------------------------------------===//
// Pass Pipeline Configuration
//===----------------------------------------------------------------------===//
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/M68k/M68kTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ class M68kTargetMachine : public LLVMTargetMachine {

mutable StringMap<std::unique_ptr<M68kSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
M68kTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/Mips/MipsTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ void MipsTargetMachine::resetSubtarget(MachineFunction *MF) {
Subtarget = &MF->getSubtarget<MipsSubtarget>();
}

void MipsTargetMachine::reset() { SubtargetMap.clear(); }

namespace {

/// Mips Code Generator Pass Configuration Options.
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/Mips/MipsTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ class MipsTargetMachine : public LLVMTargetMachine {

mutable StringMap<std::unique_ptr<MipsSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
MipsTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,8 @@ PPCTargetMachine::getSubtargetImpl(const Function &F) const {
return I.get();
}

void PPCTargetMachine::reset() { SubtargetMap.clear(); }

//===----------------------------------------------------------------------===//
// Pass Pipeline Configuration
//===----------------------------------------------------------------------===//
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/PowerPC/PPCTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ class PPCTargetMachine final : public LLVMTargetMachine {

mutable StringMap<std::unique_ptr<PPCSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
PPCTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,8 @@ bool RISCVTargetMachine::isNoopAddrSpaceCast(unsigned SrcAS,
return true;
}

void RISCVTargetMachine::reset() { SubtargetMap.clear(); }

namespace {

class RVVRegisterRegAlloc : public RegisterRegAllocBase<RVVRegisterRegAlloc> {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/RISCV/RISCVTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ class RISCVTargetMachine : public LLVMTargetMachine {
std::unique_ptr<TargetLoweringObjectFile> TLOF;
mutable StringMap<std::unique_ptr<RISCVSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
RISCVTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/Sparc/SparcTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ MachineFunctionInfo *SparcTargetMachine::createMachineFunctionInfo(
F, STI);
}

void SparcTargetMachine::reset() { SubtargetMap.clear(); }

namespace {
/// Sparc Code Generator Pass Configuration Options.
class SparcPassConfig : public TargetPassConfig {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/Sparc/SparcTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ class SparcTargetMachine : public LLVMTargetMachine {
bool is64Bit;
mutable StringMap<std::unique_ptr<SparcSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
SparcTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,8 @@ SystemZTargetMachine::getSubtargetImpl(const Function &F) const {
return I.get();
}

void SystemZTargetMachine::reset() { SubtargetMap.clear(); }

namespace {

/// SystemZ Code Generator Pass Configuration Options.
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/SystemZ/SystemZTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ class SystemZTargetMachine : public LLVMTargetMachine {

mutable StringMap<std::unique_ptr<SystemZSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;

public:
SystemZTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ WebAssemblyTargetMachine::getSubtargetImpl(const Function &F) const {
return getSubtargetImpl(CPU, FS);
}

void WebAssemblyTargetMachine::reset() { SubtargetMap.clear(); }

namespace {

class CoalesceFeaturesAndStripAtomics final : public ModulePass {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ class WebAssemblyTargetMachine final : public LLVMTargetMachine {
mutable StringMap<std::unique_ptr<WebAssemblySubtarget>> SubtargetMap;
bool UsesMultivalueABI = false;

/// Reset internal state.
void reset() override;

public:
WebAssemblyTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/X86/X86TargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,8 @@ bool X86TargetMachine::isNoopAddrSpaceCast(unsigned SrcAS,
return SrcAS < 256 && DestAS < 256;
}

void X86TargetMachine::reset() { SubtargetMap.clear(); }

//===----------------------------------------------------------------------===//
// X86 TTI query.
//===----------------------------------------------------------------------===//
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/X86/X86TargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ class X86TargetMachine final : public LLVMTargetMachine {
// True if this is used in JIT.
bool IsJIT;

/// Reset internal state.
void reset() override;

public:
X86TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
Expand Down
2 changes: 2 additions & 0 deletions llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ XtensaTargetMachine::getSubtargetImpl(const Function &F) const {
return I.get();
}

void XtensaTargetMachine::reset() { SubtargetMap.clear(); }

namespace {
/// Xtensa Code Generator Pass Configuration Options.
class XtensaPassConfig : public TargetPassConfig {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/Xtensa/XtensaTargetMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ class XtensaTargetMachine : public LLVMTargetMachine {

protected:
mutable StringMap<std::unique_ptr<XtensaSubtarget>> SubtargetMap;

/// Reset internal state.
void reset() override;
};
} // end namespace llvm

Expand Down
Loading