diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZTargetMachine.h')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZTargetMachine.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZTargetMachine.h b/contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZTargetMachine.h index ac04a080f580..9ea03e104fc9 100644 --- a/contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZTargetMachine.h +++ b/contrib/llvm-project/llvm/lib/Target/SystemZ/SystemZTargetMachine.h @@ -26,7 +26,8 @@ namespace llvm { class SystemZTargetMachine : public LLVMTargetMachine { std::unique_ptr<TargetLoweringObjectFile> TLOF; - SystemZSubtarget Subtarget; + + mutable StringMap<std::unique_ptr<SystemZSubtarget>> SubtargetMap; public: SystemZTargetMachine(const Target &T, const Triple &TT, StringRef CPU, @@ -35,11 +36,11 @@ public: CodeGenOpt::Level OL, bool JIT); ~SystemZTargetMachine() override; - const SystemZSubtarget *getSubtargetImpl() const { return &Subtarget; } - - const SystemZSubtarget *getSubtargetImpl(const Function &) const override { - return &Subtarget; - } + const SystemZSubtarget *getSubtargetImpl(const Function &) const override; + // DO NOT IMPLEMENT: There is no such thing as a valid default subtarget, + // subtargets are per-function entities based on the target-specific + // attributes of each function. + const SystemZSubtarget *getSubtargetImpl() const = delete; // Override LLVMTargetMachine TargetPassConfig *createPassConfig(PassManagerBase &PM) override; |