From: Mehdi Amini Date: Tue, 6 Jan 2015 20:05:02 +0000 (+0000) Subject: Use a Factory Method for MachineFunctionInfo Creation X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=73996c5cb87e986913e5131f2efed69de3caf1c4;p=platform%2Fupstream%2Fllvm.git Use a Factory Method for MachineFunctionInfo Creation The goal is to allows MachineFunctionInfo to override this create function to customize the creation. No change intended in existing backend in this patch. llvm-svn: 225292 --- diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index 3271410..4e9ff9e 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -72,6 +72,15 @@ private: /// MachineFunction is destroyed. struct MachineFunctionInfo { virtual ~MachineFunctionInfo(); + + /// \brief Factory function: default behavior is to call new using the + /// supplied allocator. + /// + /// This function can be overridden in a derive class. + template + static Ty *create(BumpPtrAllocator &Allocator, MachineFunction &MF) { + return new (Allocator.Allocate()) Ty(MF); + } }; class MachineFunction { @@ -239,7 +248,7 @@ public: template Ty *getInfo() { if (!MFInfo) - MFInfo = new (Allocator.Allocate()) Ty(*this); + MFInfo = Ty::template create(Allocator, *this); return static_cast(MFInfo); }