[cfe-dev] [PATCH] enable dynamic loading components for static analyzer
Ted Kremenek
kremenek at apple.com
Wed Nov 26 17:49:20 PST 2008
Looks great. Please apply.
On Nov 26, 2008, at 5:36 PM, Zhongxing Xu wrote:
> Fixed. New patch attached.
>
> On Thu, Nov 27, 2008 at 9:28 AM, Ted Kremenek <kremenek at apple.com>
> wrote:
>
> On Nov 26, 2008, at 5:14 PM, Zhongxing Xu wrote:
>
> +/// ManagerRegister - This class records manager creators
> registered at
> +/// runtime. The information is communicated to AnalysisManager
> through static
> +/// members. Better design is expected.
> +
> +class ManagerRegister {
> +public:
> + typedef ConstraintManager* (*ConstraintManagerCreator)
> (GRStateManager&);
> + typedef StoreManager* (*StoreManagerCreator)(GRStateManager&);
>
> Aren't these typedefs the same as in the ones in GRStateManager?
> Maybe we should just move those typedefs into the clang namespace
> and have them used by both GRStateManager and ManagerRegister (if
> not, let's just keep the ones in GRStateManager). It seems silly to
> have the same typedefs defined twice, which can lead to weird
> warnings if we don't keep them in sync.
>
> Done. But this introduced two #includes, commented in code. And I
> noticed there are other #includes only for including typedefs, for
> example LiveSymbolsTy/DeadSymbolsTy.
>
> I named the class ManagerRegistry instead of ManagerRegistrar.
>
> Other comments were adopted. Thanks.
>
> New patch attached.
> <load2.patch>
>
>
> Thanks Zhongxing. A few comments:
>
> ===================================================================
> --- include/clang/Analysis/PathSensitive/GRState.h (revision
> 60131)
> +++ include/clang/Analysis/PathSensitive/GRState.h (working copy)
> @@ -27,6 +27,7 @@
> #include "clang/AST/Decl.h"
> #include "clang/AST/ASTContext.h"
> #include "clang/Analysis/Analyses/LiveVariables.h"
> +#include "clang/Driver/ManagerRegistry.h" // for typedefs.
>
> This is a layering violation. libAnalysis should not depend on
> libDriver, it should be the other way. That's the whole point of
> putting ManagerRegistry in libDriver. The typedefs belong in
> libAnalysis, either in GRState.h or in a new header file (one that
> is small).
>
>
> Index: include/clang/Analysis/PathSensitive/GRExprEngine.h
> ===================================================================
> --- include/clang/Analysis/PathSensitive/GRExprEngine.h (revision
> 60131)
>
> +++ include/clang/Analysis/PathSensitive/GRExprEngine.h (working copy)
> @@ -22,6 +22,7 @@
> #include "clang/Analysis/PathSensitive/GRTransferFuncs.h"
> #include "clang/AST/Type.h"
> #include "clang/AST/ExprObjC.h"
> +#include "clang/Driver/ManagerRegistry.h" // for typedefs.
>
> This is the same layering violation. Have the typedefs be in
> libAnalysis, not libDriver.
>
>
> <load3.patch>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20081126/dfaa2cd1/attachment.html>
More information about the cfe-dev
mailing list