From 4e883d148ccde4d1d7dc5617bd94692a1d35a943 Mon Sep 17 00:00:00 2001 From: Stefano Sanfilippo Date: Fri, 6 Mar 2015 13:42:47 +0100 Subject: [PATCH] LLVM Module is now managed by BitcodeEmitter. --- BitcodeEmitter.cpp | 3 ++- BitcodeEmitter.hpp | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/BitcodeEmitter.cpp b/BitcodeEmitter.cpp index e7078c9..643e72d 100644 --- a/BitcodeEmitter.cpp +++ b/BitcodeEmitter.cpp @@ -39,7 +39,8 @@ struct BitcodeEmitter::Private { Scope scope; }; -BitcodeEmitter::BitcodeEmitter(llvm::Module *module): module(module) { +BitcodeEmitter::BitcodeEmitter() { + module = std::unique_ptr(new llvm::Module("monicelli", getGlobalContext())); d = new Private; } diff --git a/BitcodeEmitter.hpp b/BitcodeEmitter.hpp index a9af889..e0ffac8 100644 --- a/BitcodeEmitter.hpp +++ b/BitcodeEmitter.hpp @@ -21,6 +21,8 @@ */ #include "Emitter.hpp" +#include + namespace llvm { class Module; @@ -30,7 +32,7 @@ namespace monicelli { class BitcodeEmitter: public Emitter { public: - BitcodeEmitter(llvm::Module *module); + BitcodeEmitter(); BitcodeEmitter(BitcodeEmitter &) = delete; virtual ~BitcodeEmitter(); @@ -53,10 +55,14 @@ public: virtual void emit(FunctionCall const&) override; virtual void emit(BinaryExpression const&) override; -private: + llvm::Module const& getModule() const { + return *module; + } + struct Private; - llvm::Module *module; +private: + std::unique_ptr module; Private *d; };