aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-11-18 04:32:13 +0000
committerTed Kremenek <kremenek@apple.com>2011-11-18 04:32:13 +0000
commit8a0c5c2ec5c5496cfb01d2c86bd50991866a7356 (patch)
tree74922c6dc1fe51083207be0ef3884f31f7c3ea7b /lib/Frontend/CompilerInvocation.cpp
parent5a1ac89b244940a0337ea7ae7dc371e2a9bf7c50 (diff)
Refine placement of LangOptions object in CompilerInvocation by adding a new baseclass CompilerInvocationBase with a custom copy constructor. This ensures that whenever the CompilerInvocation object's copy constructor is used we always clone the LangOptions object.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144973 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--lib/Frontend/CompilerInvocation.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp
index 13be408141..738facf069 100644
--- a/lib/Frontend/CompilerInvocation.cpp
+++ b/lib/Frontend/CompilerInvocation.cpp
@@ -34,12 +34,11 @@ using namespace clang;
// Initialization.
//===----------------------------------------------------------------------===//
-CompilerInvocation::CompilerInvocation()
+CompilerInvocationBase::CompilerInvocationBase()
: LangOpts(new LangOptions()) {}
-void CompilerInvocation::setLangOpts(LangOptions *LOpts) {
- LangOpts = LOpts;
-}
+CompilerInvocationBase::CompilerInvocationBase(const CompilerInvocationBase &X)
+ : LangOpts(new LangOptions(*X.getLangOpts())) {}
//===----------------------------------------------------------------------===//
// Utility functions.