summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-05-04 02:43:00 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-05-04 02:43:00 +0000
commit105193772d84057493968310c1d1c6dd0f1ae735 (patch)
tree49b0aa2d644fe8c7bfb1555b783433b6c55fafcf
parentbcc6ac93bae207431efff90dfb3e741ffdf11469 (diff)
downloadllvm-105193772d84057493968310c1d1c6dd0f1ae735.tar.gz
llvm-105193772d84057493968310c1d1c6dd0f1ae735.tar.bz2
llvm-105193772d84057493968310c1d1c6dd0f1ae735.tar.xz
Don't construct or delete a module on the Linker.
The linker is now responsible only for actually linking the modules, it is up to the clients to create and destroy them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181098 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Linker.h7
-rw-r--r--lib/Linker/Linker.cpp5
-rw-r--r--tools/lto/LTOCodeGenerator.cpp3
3 files changed, 2 insertions, 13 deletions
diff --git a/include/llvm/Linker.h b/include/llvm/Linker.h
index 6761b8e68e..b199a34cbf 100644
--- a/include/llvm/Linker.h
+++ b/include/llvm/Linker.h
@@ -44,13 +44,6 @@ class Linker {
/// @name Constructors
/// @{
public:
- /// Construct the Linker with an empty module which will be given the
- /// name \p progname. \p progname will also be used for error messages.
- /// @brief Construct with empty module
- Linker(StringRef modulename, ///< name of linker's end-result module
- LLVMContext &C ///< Context for global info
- );
-
/// Construct the Linker with a previously defined module, \p aModule. Use
/// \p progname for the name of the program in error messages.
/// @brief Construct with existing module
diff --git a/lib/Linker/Linker.cpp b/lib/Linker/Linker.cpp
index c80f8173c3..ab99b98ee0 100644
--- a/lib/Linker/Linker.cpp
+++ b/lib/Linker/Linker.cpp
@@ -19,13 +19,8 @@
#include "llvm/Support/system_error.h"
using namespace llvm;
-Linker::Linker(StringRef modname,
- LLVMContext& C):
- Composite(new Module(modname, C)) { }
-
Linker::Linker(Module* aModule) :
Composite(aModule) { }
Linker::~Linker() {
- delete Composite;
}
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index 683a480d3f..de2c1fd4b8 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -69,7 +69,7 @@ const char* LTOCodeGenerator::getVersionString() {
LTOCodeGenerator::LTOCodeGenerator()
: _context(getGlobalContext()),
- _linker("ld-temp.o", _context), _target(NULL),
+ _linker(new Module("ld-temp.o", _context)), _target(NULL),
_emitDwarfDebugInfo(false), _scopeRestrictionsDone(false),
_codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
_nativeObjectFile(NULL) {
@@ -81,6 +81,7 @@ LTOCodeGenerator::LTOCodeGenerator()
LTOCodeGenerator::~LTOCodeGenerator() {
delete _target;
delete _nativeObjectFile;
+ delete _linker.getModule();
for (std::vector<char*>::iterator I = _codegenOptions.begin(),
E = _codegenOptions.end(); I != E; ++I)