Sorry for the unresponsiveness, I've been fire fighting for other stuffs.
I'll look into this and try to get it fixed this week.

On Tue, Nov 6, 2018 at 9:52 AM David Blaikie <dblai...@gmail.com> wrote:

> Shuai - have you had a chance to look at this?
>
> On Mon, Oct 22, 2018 at 4:43 PM Richard Smith <rich...@metafoo.co.uk>
> wrote:
>
>> On Mon, 22 Oct 2018 at 14:57, David Blaikie via cfe-commits <
>> cfe-commits@lists.llvm.org> wrote:
>>
>>> Richard - any further thoughts here (re: layering/dependencies, etc)?
>>> Would love to get the layering oddity fixed rather than having it get more
>>> embedded over time.
>>>
>>
>> Here's the intended current directory layout and layering as I understand
>> it:
>>
>>  * include/clang/Analysis and lib/Analysis are the parts of the static
>> analysis engine that are depended on by both Sema and StaticAnalyzer, and
>> include common functionality / infrastructure
>>  * include/clang/Analysis/Analyses and lib/Analysis/Analyses are the
>> specific Sema analyses (that don't depend on the static analyzer);
>> StaticAnalyzer should not need to depend on this
>>  * the StaticAnalyzer library should contain all the pieces that are
>> specific to the static analyzer
>>  * Sema should not depend on Tooling, but it's fine for StaticAnalyzer to
>> depend on Tooling
>>
>> Compared to where we are today, there are two differences:
>>
>> 1) The implementations of the headers in include/clang/Analysis are in
>> lib/Analysis, not in lib/Analysis/Analyses
>> 2) ExprMutationAnalyzer is in lib/Analysis despite not being part of the
>> common infrastructure depended on by Sema and StaticAnalyzer
>>
>> For point 1, we should change the lib/Analysis directory layout to match
>> the headers.
>> For point 2, we should find a home for this ExprMutationAnalyzer code
>> that makes sense. Given that the intent is to use it from the static
>> analyzer, that seems like a reasonable home for it, but libTooling would
>> also make some sense (perhaps a new subdirectory Tooling/Analysis), since
>> it's only performing AST matching, not a flow-sensitive / path-sensitive
>> static analysis.
>>
>> On Tue, Oct 2, 2018 at 2:44 PM Shuai Wang via cfe-commits <
>>> cfe-commits@lists.llvm.org> wrote:
>>>
>>>> On Mon, Oct 1, 2018 at 4:58 PM Richard Smith <rich...@metafoo.co.uk>
>>>> wrote:
>>>>
>>>>> On Mon, 1 Oct 2018 at 16:10, George Karpenkov via cfe-commits <
>>>>> cfe-commits@lists.llvm.org> wrote:
>>>>>
>>>>>> Hi Richard,
>>>>>>
>>>>>> On Oct 1, 2018, at 2:50 PM, Richard Smith via cfe-commits <
>>>>>> cfe-commits@lists.llvm.org> wrote:
>>>>>>
>>>>>> This looks like the wrong fix to me, but I don't really know enough
>>>>>> about what's being done with ExprMutationAnalyzer to have an opinion on
>>>>>> what the right fix is.
>>>>>>
>>>>>> Shuai, what is the goal here? Why is this code being moved to
>>>>>> Analysis/?
>>>>>>
>>>>>>
>>>>>> I’ve asked for this possibility, as I wanted to use it from the Clang
>>>>>> static analyzer.
>>>>>>
>>>>>> Do you intend to call it from the compiler frontend at some point? I
>>>>>> can see a code review for the move itself, but no discussion of a plan or
>>>>>> overall direction being followed here. Did I miss it?
>>>>>>
>>>>>> We have historically decided to not use the tooling interfaces
>>>>>> (ASTMatcher, ParentMap, etc) from the frontend,
>>>>>>
>>>>>>
>>>>>> Clang analyzer uses ASTMatcher all over the place.
>>>>>>
>>>>>> because they're generally a poor fit for our goals (we aim for a
>>>>>> largely-single-pass compilation with good locality, and the AST matchers
>>>>>> make different design choices)
>>>>>>
>>>>>>
>>>>>> That’s totally good for the analyzer though, right?
>>>>>>
>>>>>
>>>>> Yes, that all seems fine for the static analyzer.
>>>>>
>>>>>
>>>>>> In any case, in future it might make sense to move the analyzer out
>>>>>> of Clang proper.
>>>>>> But for know the only way to use clang-tidy utilities from the
>>>>>> analyzer is to move them into Clang.
>>>>>>
>>>>>
>>>>> Right. I think we should try to maintain the idea that all the Clang
>>>>> Static Analyzer-specific things are in lib/StaticAnalyzer, and 
>>>>> lib/Analysis
>>>>> only contains things depended on by the frontend. (That is: the things a
>>>>> clang binary would use if we didn't link in the static analyzer)
>>>>>
>>>>> Given the above, I think the best approach would be to move this code
>>>>> out of lib/Analysis and into somewhere in lib/StaticAnalyzer. There
>>>>> shouldn't be any problem with clang-tidy using it from there, since it
>>>>> already depends on the static analyzer.
>>>>>
>>>> I'm happy to do the move.
>>>> Could you (or someone) help point out where exactly I should move it to
>>>> though?
>>>>
>>>>> . If you want to change that, we'll need to discuss that decision.
>>>>>>
>>>>>> If the idea is to move this code into clang proper so that it can be
>>>>>> used by various different tooling clients, we'd need to discuss the right
>>>>>> place for it. Perhaps lib/Tooling/Analysis would make sense?
>>>>>>
>>>>>>
>>>>>> On Mon, 1 Oct 2018 at 13:13, David Blaikie via cfe-commits <
>>>>>> cfe-commits@lists.llvm.org> wrote:
>>>>>>
>>>>>>> I can't really reproduce this - when I try to build clang/llvm with
>>>>>>> LLVM_ENABLE_MODULES in CMake I'm still seeing an error I reported March 
>>>>>>> on
>>>>>>> a cfe-dev thread - something to do with unique_ptr instantiations for
>>>>>>> MappedBlockStream in the PDB parsing code.
>>>>>>>
>>>>>>> So, I'm wondering what error you hit, Eric/where/how, etc...
>>>>>>>
>>>>>>> On Sun, Sep 30, 2018 at 10:23 AM Eric Fiselier <e...@efcs.ca> wrote:
>>>>>>>
>>>>>>>> +rsmith (actually this time)
>>>>>>>>
>>>>>>>> On Sun, Sep 30, 2018 at 12:09 PM Eric Fiselier <e...@efcs.ca>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> +rsmith
>>>>>>>>>
>>>>>>>>> Hi All,
>>>>>>>>>
>>>>>>>>> Sorry, I'm not actually sure why this fix is correct.I stole both
>>>>>>>>> the fix and the comment from a similar one on L150 of the module map 
>>>>>>>>> left
>>>>>>>>> by Richard Smith.
>>>>>>>>>
>>>>>>>>> /Eric
>>>>>>>>>
>>>>>>>>> On Tue, Sep 25, 2018 at 8:36 PM Shuai Wang <shuaiw...@google.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> I'd like to understand this better as well, in particular what
>>>>>>>>>> would be a proper fix?
>>>>>>>>>>
>>>>>>>>>> On Tue, Sep 25, 2018 at 2:15 PM David Blaikie <dblai...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> +Shuai Wang
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Sep 25, 2018 at 2:14 PM David Blaikie <
>>>>>>>>>>> dblai...@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hey Eric - thanks for the fix - but could you explain the issue
>>>>>>>>>>>> here in a bit more detail, as I'm a bit confused (& really 
>>>>>>>>>>>> interested in
>>>>>>>>>>>> understanding any layering problems in LLVM - and fixing 
>>>>>>>>>>>> them/making sure
>>>>>>>>>>>> they're fixed/holding the line/etc)
>>>>>>>>>>>>
>>>>>>>>>>>> What do you mean by "pull all of the AST matchers library into
>>>>>>>>>>>> clang" - how does including a header ever add a link dependency?
>>>>>>>>>>>>
>>>>>>>>>>>> - Dave
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sat, Sep 22, 2018 at 5:49 PM Eric Fiselier via cfe-commits <
>>>>>>>>>>>> cfe-commits@lists.llvm.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Author: ericwf
>>>>>>>>>>>>> Date: Sat Sep 22 17:48:05 2018
>>>>>>>>>>>>> New Revision: 342827
>>>>>>>>>>>>>
>>>>>>>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=342827&view=rev
>>>>>>>>>>>>> Log:
>>>>>>>>>>>>> Fix modules build with shared library.
>>>>>>>>>>>>>
>>>>>>>>>>>>> r341994 caused clangAnalysis to pull all of the AST matchers
>>>>>>>>>>>>> library into clang. Due to inline key functions in the headers,
>>>>>>>>>>>>> importing the AST matchers library gives a link dependency on
>>>>>>>>>>>>> the
>>>>>>>>>>>>> AST matchers (and thus the AST), which clang should not
>>>>>>>>>>>>> have.
>>>>>>>>>>>>>
>>>>>>>>>>>>> This patch works around the issues by excluding the offending
>>>>>>>>>>>>> libclangAnalysis header in the modulemap.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Modified:
>>>>>>>>>>>>>     cfe/trunk/include/clang/module.modulemap
>>>>>>>>>>>>>
>>>>>>>>>>>>> Modified: cfe/trunk/include/clang/module.modulemap
>>>>>>>>>>>>> URL:
>>>>>>>>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/module.modulemap?rev=342827&r1=342826&r2=342827&view=diff
>>>>>>>>>>>>>
>>>>>>>>>>>>> ==============================================================================
>>>>>>>>>>>>> --- cfe/trunk/include/clang/module.modulemap (original)
>>>>>>>>>>>>> +++ cfe/trunk/include/clang/module.modulemap Sat Sep 22
>>>>>>>>>>>>> 17:48:05 2018
>>>>>>>>>>>>> @@ -5,6 +5,12 @@ module Clang_Analysis {
>>>>>>>>>>>>>    textual header "Analysis/Analyses/ThreadSafetyOps.def"
>>>>>>>>>>>>>
>>>>>>>>>>>>>    module * { export * }
>>>>>>>>>>>>> +
>>>>>>>>>>>>> +  // FIXME: Exclude these headers to avoid pulling all of the
>>>>>>>>>>>>> AST matchers
>>>>>>>>>>>>> +  // library into clang. Due to inline key functions in the
>>>>>>>>>>>>> headers,
>>>>>>>>>>>>> +  // importing the AST matchers library gives a link
>>>>>>>>>>>>> dependency on the AST
>>>>>>>>>>>>> +  // matchers (and thus the AST), which clang-format should
>>>>>>>>>>>>> not have.
>>>>>>>>>>>>> +  exclude header "Analysis/Analyses/ExprMutationAnalyzer.h"
>>>>>>>>>>>>>  }
>>>>>>>>>>>>>
>>>>>>>>>>>>>  module Clang_AST {
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> cfe-commits mailing list
>>>>>>>>>>>>> cfe-commits@lists.llvm.org
>>>>>>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>> cfe-commits mailing list
>>>>>>> cfe-commits@lists.llvm.org
>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>>>
>>>>>> _______________________________________________
>>>>>> cfe-commits mailing list
>>>>>> cfe-commits@lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> cfe-commits mailing list
>>>>>> cfe-commits@lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>>
>>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits@lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits@lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to