<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Jul 5, 2014 at 10:26 PM, Alp Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: alp<br>
Date: Sun Jul 6 00:26:07 2014<br>
New Revision: 212387<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=212387&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=212387&view=rev</a><br>
Log:<br>
Use non-intrusive refcounting for LangOptions<br>
<br>
This type is only refcounted in a couple of places so making ownership explicit<br>
improves clarity.<br>
<br>
Modified:<br>
cfe/trunk/include/clang/Basic/LangOptions.h<br>
cfe/trunk/include/clang/Frontend/ASTUnit.h<br>
cfe/trunk/include/clang/Frontend/CompilerInvocation.h<br>
cfe/trunk/lib/Frontend/ASTUnit.cpp<br>
<br>
Modified: cfe/trunk/include/clang/Basic/LangOptions.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.h?rev=212387&r1=212386&r2=212387&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.h?rev=212387&r1=212386&r2=212387&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Basic/LangOptions.h (original)<br>
+++ cfe/trunk/include/clang/Basic/LangOptions.h Sun Jul 6 00:26:07 2014<br>
@@ -19,7 +19,6 @@<br>
#include "clang/Basic/LLVM.h"<br>
#include "clang/Basic/ObjCRuntime.h"<br>
#include "clang/Basic/Visibility.h"<br>
-#include "llvm/ADT/IntrusiveRefCntPtr.h"<br>
#include <string><br>
<br>
namespace clang {<br>
@@ -53,7 +52,7 @@ protected:<br>
<br>
/// \brief Keeps track of the various options that can be<br>
/// enabled, which controls the dialect of C or C++ that is accepted.<br>
-class LangOptions : public RefCountedBase<LangOptions>, public LangOptionsBase {<br>
+class LangOptions : public LangOptionsBase {<br>
public:<br>
typedef clang::Visibility Visibility;<br>
<br>
<br>
Modified: cfe/trunk/include/clang/Frontend/ASTUnit.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTUnit.h?rev=212387&r1=212386&r2=212387&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTUnit.h?rev=212387&r1=212386&r2=212387&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Frontend/ASTUnit.h (original)<br>
+++ cfe/trunk/include/clang/Frontend/ASTUnit.h Sun Jul 6 00:26:07 2014<br>
@@ -83,7 +83,7 @@ public:<br>
};<br>
<br>
private:<br>
- IntrusiveRefCntPtr<LangOptions> LangOpts;<br>
+ std::shared_ptr<LangOptions> LangOpts;<br>
IntrusiveRefCntPtr<DiagnosticsEngine> Diagnostics;<br>
IntrusiveRefCntPtr<FileManager> FileMgr;<br>
IntrusiveRefCntPtr<SourceManager> SourceMgr;<br>
<br>
Modified: cfe/trunk/include/clang/Frontend/CompilerInvocation.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CompilerInvocation.h?rev=212387&r1=212386&r2=212387&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CompilerInvocation.h?rev=212387&r1=212386&r2=212387&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Frontend/CompilerInvocation.h (original)<br>
+++ cfe/trunk/include/clang/Frontend/CompilerInvocation.h Sun Jul 6 00:26:07 2014<br>
@@ -52,9 +52,9 @@ bool ParseDiagnosticArgs(DiagnosticOptio<br>
class CompilerInvocationBase : public RefCountedBase<CompilerInvocation> {<br>
void operator=(const CompilerInvocationBase &) LLVM_DELETED_FUNCTION;<br>
<br>
-protected:<br>
+public:<br></blockquote><div><br></div><div>Why make the fields public?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
/// Options controlling the language variant.<br>
- IntrusiveRefCntPtr<LangOptions> LangOpts;<br>
+ std::shared_ptr<LangOptions> LangOpts;<br>
<br>
/// Options controlling the target.<br>
IntrusiveRefCntPtr<TargetOptions> TargetOpts;<br>
@@ -68,7 +68,6 @@ protected:<br>
/// Options controlling the preprocessor (aside from \#include handling).<br>
IntrusiveRefCntPtr<PreprocessorOptions> PreprocessorOpts;<br>
<br>
-public:<br>
CompilerInvocationBase();<br>
~CompilerInvocationBase();<br>
<br>
<br>
Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=212387&r1=212386&r2=212387&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=212387&r1=212386&r2=212387&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/ASTUnit.cpp Sun Jul 6 00:26:07 2014<br>
@@ -1087,7 +1087,7 @@ bool ASTUnit::Parse(llvm::MemoryBuffer *<br>
"IR inputs not support here!");<br>
<br>
// Configure the various subsystems.<br>
- LangOpts = &Clang->getLangOpts();<br>
+ LangOpts = Clang->getInvocation().LangOpts;<br>
FileSystemOpts = Clang->getFileSystemOpts();<br>
IntrusiveRefCntPtr<vfs::FileSystem> VFS =<br>
createVFSFromCompilerInvocation(Clang->getInvocation(), getDiagnostics());<br>
@@ -1709,7 +1709,7 @@ void ASTUnit::transferASTDataFromCompile<br>
// Steal the created target, context, and preprocessor if they have been<br>
// created.<br>
assert(CI.hasInvocation() && "missing invocation");<br>
- LangOpts = CI.getInvocation().getLangOpts();<br>
+ LangOpts = CI.getInvocation().LangOpts;<br>
TheSema.reset(CI.takeSema());<br>
Consumer.reset(CI.takeASTConsumer());<br>
if (CI.hasASTContext())<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>