Skip to content

Commit c8a7f14

Browse files
authored
[Backend] Add clearSubtargetMap API for TargetMachine. (#112383)
- [x] Add `clearSubtargetInfo` API to TargetMachine and each backend to make it possible to release memory used in each backend's `SubtargetInfo` map if needed. Keep this API as `protected` so that it will be used with precautions.
1 parent 3ad0148 commit c8a7f14

File tree

7 files changed

+18
-0
lines changed

7 files changed

+18
-0
lines changed

llvm/include/llvm/Target/TargetMachine.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,9 @@ class LLVMTargetMachine : public TargetMachine {
448448

449449
void initAsmInfo();
450450

451+
/// Reset internal state.
452+
virtual void reset() {};
453+
451454
public:
452455
/// Get a TargetTransformInfo implementation for the target.
453456
///

llvm/lib/Target/AArch64/AArch64TargetMachine.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,8 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Target() {
272272
initializeAArch64GlobalsTaggingPass(*PR);
273273
}
274274

275+
void AArch64TargetMachine::reset() { SubtargetMap.clear(); }
276+
275277
//===----------------------------------------------------------------------===//
276278
// AArch64 Lowering public interface.
277279
//===----------------------------------------------------------------------===//

llvm/lib/Target/AArch64/AArch64TargetMachine.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ class AArch64TargetMachine : public LLVMTargetMachine {
2626
std::unique_ptr<TargetLoweringObjectFile> TLOF;
2727
mutable StringMap<std::unique_ptr<AArch64Subtarget>> SubtargetMap;
2828

29+
/// Reset internal state.
30+
void reset() override;
31+
2932
public:
3033
AArch64TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
3134
StringRef FS, const TargetOptions &Options,

llvm/lib/Target/ARM/ARMTargetMachine.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,3 +642,5 @@ bool ARMBaseTargetMachine::parseMachineFunctionInfo(
642642
MF.getInfo<ARMFunctionInfo>()->initializeBaseYamlFields(YamlMFI);
643643
return false;
644644
}
645+
646+
void ARMBaseTargetMachine::reset() { SubtargetMap.clear(); }

llvm/lib/Target/ARM/ARMTargetMachine.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ class ARMBaseTargetMachine : public LLVMTargetMachine {
3838
bool isLittle;
3939
mutable StringMap<std::unique_ptr<ARMSubtarget>> SubtargetMap;
4040

41+
/// Reset internal state.
42+
void reset() override;
43+
4144
public:
4245
ARMBaseTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
4346
StringRef FS, const TargetOptions &Options,

llvm/lib/Target/X86/X86TargetMachine.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,8 @@ bool X86TargetMachine::isNoopAddrSpaceCast(unsigned SrcAS,
376376
return SrcAS < 256 && DestAS < 256;
377377
}
378378

379+
void X86TargetMachine::reset() { SubtargetMap.clear(); }
380+
379381
//===----------------------------------------------------------------------===//
380382
// X86 TTI query.
381383
//===----------------------------------------------------------------------===//

llvm/lib/Target/X86/X86TargetMachine.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ class X86TargetMachine final : public LLVMTargetMachine {
3131
// True if this is used in JIT.
3232
bool IsJIT;
3333

34+
/// Reset internal state.
35+
void reset() override;
36+
3437
public:
3538
X86TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
3639
StringRef FS, const TargetOptions &Options,

0 commit comments

Comments
 (0)