forked from OSchip/llvm-project
CompilerInstance: Move LLVMContext member out of constructor.
llvm-svn: 96314
This commit is contained in:
parent
aced322c3c
commit
e922d9bdf0
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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") {
|
||||
|
|
Loading…
Reference in New Issue