[cfe-dev] Adding more analysis algorithms to Clang?

Ted Kremenek kremenek at apple.com
Mon Oct 24 17:31:26 PDT 2011


Applied in r142884!  Thanks.

On Oct 22, 2011, at 1:31 PM, Guoping Long wrote:

> Hi,
> 
>    Attached is the re-generated patch using PostOrderCFGView.
> 
> --
> Guoping
> 
> 2011/10/21 Chandler Carruth <chandlerc at google.com>
> On Fri, Oct 21, 2011 at 10:39 PM, Guoping Long <longguoping at gmail.com> wrote:
> Hi, Ted
> 
>    After I update from the svn, the source tree can not be compiled (so I can not test the new code using PostOrderCFGView). I only updated Clang. Do I still need to update llvm?
> 
> Yes, this represents an API shift. Clang and LLVM must always be updated in sync.
>  
> Here is the error message:
> /Users/gplong/llvm-test/tools/clang/tools/driver/cc1as_main.cpp:298:44: error: too many arguments to function call, expected 9, have 10
>                                            Opts.ShowInst));
>                                            ^~~~~~~~~~~~~
> /Users/gplong/llvm-test/include/llvm/Support/TargetRegistry.h:424:5: note: 'createAsmStreamer' declared here
>     MCStreamer *createAsmStreamer(MCContext &Ctx,
>     ^
> 1 error generated.
> 
> ------
> Guoping
> 
> 2011/10/21 Ted Kremenek <kremenek at apple.com>
> Hi Guoping,
> 
> I've added PostOrderCFGView.  Can you regenerate your patch using this class?
> 
> Cheers,
> Ted
> 
> 
> On Oct 21, 2011, at 10:25 AM, Guoping Long wrote:
> 
>> Hi, Ted
>> 
>>   TopologicallySortedCFG implements a post ordering of all CFG nodes. Maybe renaming it into POSortedCFG is better. Similarly, some algorithms may need something like pre-ordered CFG. I believe more analysis algorithms may need either of these. It may be nice to have such a class as an basic functionality in the infrastructure. Analysis algorithms will just *use* this basic functionality, rather than implement/copy-paste such classes in a somewhat ad-hoc way.
>> 
>> ----
>> Guoping
>> 
>> 2011/10/21 Ted Kremenek <kremenek at apple.com>
>> Hi Guoping,
>> 
>> This looks great to me.  My main concern is that we are copy-pasting TopologicallySortedCFG and CFGBlockSet yet again.  This is a very bad trend.  Before this patch goes in, I'd like to see that common code refactored.  I'll look into fixing that today.
>> 
>> Cheers,
>> Ted
>> 
>> On Oct 20, 2011, at 11:57 AM, Guoping Long wrote:
>> 
>>> Hi
>>> 
>>>    Thanks Anna. Thanks for all who help point issues in my code!
>>> 
>>>     The FileCheck logic has been added. Now I believe the code is at least in a reasonable shape. Attached is the revised patch.  Please let me know if there are additional issues. I shall fix them.
>>> 
>>> ----
>>> Guoping
>>> 
>>> 2011/10/18 Anna Zaks <ganna at apple.com>
>>> Hi Guoping,
>>> 
>>> To automate testing, you should check the expected output of the dominators analysis checker with FileCheck. Inside the test, you specify the command which should be applied on it as well as the expected output. It will get tested when you run the following from the clang build directory (see the Testing section on http://clang.llvm.org/hacking.html):
>>> $ make test
>>> or if you only want to test the tests from the analysis folder:
>>> $ TESTDIRS=Analysis make test
>>> 
>>> Your test is probably going to look similar to the following example, which tests CFG builder:
>>> test/Analysis/initializers-cfg-output.cpp
>>> 
>>> You can find the documentation on FileCheck here: http://llvm.org/docs/TestingGuide.html The document might be a bit outdated but it does a good job explaining the concepts.
>>> 
>>> Cheers,
>>> Anna.
>>> On Oct 18, 2011, at 9:08 AM, Guoping Long wrote:
>>> 
>>>> Hi, clang
>>>> 
>>>>   Thanks Joerg and Arash. Attached is the new patch with everything contained.  Please let me know if there are any further issues. I shall continue working to improve it.
>>>> 
>>>> --Guoping
>>>> 
>>>> 2011/10/18 Joerg Sonnenberger <joerg at britannica.bec.de>
>>>> On Mon, Oct 17, 2011 at 10:59:27PM -0700, Guoping Long wrote:
>>>> > 1 The patch file is generated by running svn diff under the llvm/tools/clang
>>>> > directory. I do not know why this patch only contains information for
>>>> > existing file modifications, not including new added files (dominators.cpp
>>>> > (should be in clang/lib/Analysis/), dominators.h (should be in
>>>> > clang/include/clang/Analysis/Analyses/), domtest.c (should be in
>>>> > clang/test/Analysis)). So I included the patch in together with the three
>>>> > new files as attached.
>>>> 
>>>> Did you run "svn add" on them first?
>>>> 
>>>> Joerg
>>>> 
>>>> <dominators.patch>_______________________________________________
>>>> 
>>>> cfe-dev mailing list
>>>> cfe-dev at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>> 
>>> 
>>> <dominators.patch>_______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>> 
>> 
> 
> 
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> 
> 
> 
> <dominators.patch>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20111024/8bfd60ea/attachment.html>


More information about the cfe-dev mailing list