diff options
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVTargetMachine.h')
-rw-r--r-- | llvm/lib/Target/RISCV/RISCVTargetMachine.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVTargetMachine.h b/llvm/lib/Target/RISCV/RISCVTargetMachine.h index ebf3f3c07955..a4476fa40a7d 100644 --- a/llvm/lib/Target/RISCV/RISCVTargetMachine.h +++ b/llvm/lib/Target/RISCV/RISCVTargetMachine.h @@ -22,7 +22,7 @@ namespace llvm { class RISCVTargetMachine : public LLVMTargetMachine { std::unique_ptr<TargetLoweringObjectFile> TLOF; - RISCVSubtarget Subtarget; + mutable StringMap<std::unique_ptr<RISCVSubtarget>> SubtargetMap; public: RISCVTargetMachine(const Target &T, const Triple &TT, StringRef CPU, @@ -30,9 +30,11 @@ public: Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM, CodeGenOpt::Level OL, bool JIT); - const RISCVSubtarget *getSubtargetImpl(const Function &) const override { - return &Subtarget; - } + const RISCVSubtarget *getSubtargetImpl(const Function &F) 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 RISCVSubtarget *getSubtargetImpl() const = delete; TargetPassConfig *createPassConfig(PassManagerBase &PM) override; |