CompilerInstance: Move LLVMContext member out of constructor.

llvm-svn: 96314
This commit is contained in:
Daniel Dunbar 2010-02-16 01:54:47 +00:00
parent aced322c3c
commit e922d9bdf0
3 changed files with 16 additions and 18 deletions

View File

@ -58,8 +58,7 @@ class TargetInfo;
/// and a long form that takes explicit instances of any required objects.
class CompilerInstance {
/// The LLVM context used for this instance.
llvm::LLVMContext *LLVMContext;
bool OwnsLLVMContext;
llvm::OwningPtr<llvm::LLVMContext> LLVMContext;
/// The options used in this compiler instance.
llvm::OwningPtr<CompilerInvocation> Invocation;
@ -97,11 +96,10 @@ class CompilerInstance {
/// The list of active output files.
std::list< std::pair<std::string, llvm::raw_ostream*> > OutputFiles;
void operator=(const CompilerInstance &); // DO NOT IMPLEMENT
CompilerInstance(const CompilerInstance&); // DO NOT IMPLEMENT
public:
/// Create a new compiler instance with the given LLVM context, optionally
/// taking ownership of it.
CompilerInstance(llvm::LLVMContext *_LLVMContext = 0,
bool _OwnsLLVMContext = true);
CompilerInstance();
~CompilerInstance();
/// @name High-Level Operations
@ -150,12 +148,11 @@ public:
return *LLVMContext;
}
llvm::LLVMContext *takeLLVMContext() { return LLVMContext.take(); }
/// setLLVMContext - Replace the current LLVM context and take ownership of
/// \arg Value.
void setLLVMContext(llvm::LLVMContext *Value, bool TakeOwnership = true) {
LLVMContext = Value;
OwnsLLVMContext = TakeOwnership;
}
void setLLVMContext(llvm::LLVMContext *Value);
/// }
/// @name Compiler Invocation and Options

View File

@ -35,16 +35,15 @@
#include "llvm/System/Program.h"
using namespace clang;
CompilerInstance::CompilerInstance(llvm::LLVMContext *_LLVMContext,
bool _OwnsLLVMContext)
: LLVMContext(_LLVMContext),
OwnsLLVMContext(_OwnsLLVMContext),
Invocation(new CompilerInvocation) {
CompilerInstance::CompilerInstance()
: Invocation(new CompilerInvocation()) {
}
CompilerInstance::~CompilerInstance() {
if (OwnsLLVMContext)
delete LLVMContext;
}
void CompilerInstance::setLLVMContext(llvm::LLVMContext *Value) {
LLVMContext.reset(Value);
}
void CompilerInstance::setInvocation(CompilerInvocation *Value) {

View File

@ -195,7 +195,9 @@ static int cc1_test(Diagnostic &Diags,
int cc1_main(const char **ArgBegin, const char **ArgEnd,
const char *Argv0, void *MainAddr) {
CompilerInstance Clang(new llvm::LLVMContext, true);
CompilerInstance Clang;
Clang.setLLVMContext(new llvm::LLVMContext);
// Run clang -cc1 test.
if (ArgBegin != ArgEnd && llvm::StringRef(ArgBegin[0]) == "-cc1test") {