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

Arjun Singri arjunsingri at gmail.com
Wed Oct 5 11:53:19 PDT 2011

1. Use "unsigned int" instead of just "unsigned"
2. Shouldnt       "CFGStack.pop_back_val(); " on line 45 be outside the "if
(AllVisited)" statement?
3. The check on line 76 is unnecessary. If you are at line 76 then the check
at line 71 was false which means that the check at 76 is true. So I guess
replace "else if" with "else".
4. typo on line 52


On Tue, Oct 4, 2011 at 8:34 PM, Guoping Long <longguoping at gmail.com> wrote:

> Dear Ted
>    I added two control flow analysis algorithms: One builds the dominance
> tree for CFG. The other one finds all SCC components within the CFG.
> Attached is the patch. I integrated these algorithms within the CFG and
> CFGBlock classes. This is the first time I submit something, so I have some
> questions:
> 1 While I would really love to contribute, I am not sure if the code
> quality is enough. Please let me know any problems with the code so I shall
> fix them.
> 2 These algorithms shall work on any CFG. I am not sure what kind of
> special test cases should be added. I do wrote an example (in
> tools/clang/examples) to illustrate how to use these two algorithms. Is it
> necessary to submit the example into the examples/ directory?
> 3 I tried my best to follow the code standards and comments. Also, in the
> comments, I listed the key reference papers which described thorough details
> of these algorithms. They are the state of the art algorithms as far as I
> know, and very efficient, although I am not sure my implementation is good
> or not.
> I am looking forward to feedback. I shall fix problems until it meets the
> quality for actual commit.
> Thanks.
> ------------
> Guoping
> 2011/10/3 Ted Kremenek <kremenek at apple.com>
>> Hi Guoping,
>> Additions to libAnalysis have largely been demand-driven.  I think we are
>> fine with general contributions to this library that meeting the following
>> criteria:
>> (1) Meet the Clang coding conventions and quality expectations.
>> (2) Are testable ("make test"), and tests are included in clang/test.
>> (3) Performance is acceptable and measurable, or at least documented when
>> algorithms are known to be expensive.
>> (4) APIs are well-documented, which can come in the form of good doxygen
>> comments.
>> Source-to-source transformations are welcome, and the Clang codebase does
>> contains tools that are source-to-source rewriters.  For example, libRewrite
>> provides low-level functionality for doing textual rewrites of source files
>> using Clang SourceLocations.  Other analysis algorithms are useful as well;
>> we just prefer that they can be regression tested, and the APIs are
>> well-documented (especially if they don't have any real clients in the
>> codebase at present).
>> Cheers,
>> Ted
>> On Oct 3, 2011, at 2:40 PM, Guoping Long wrote:
>> > Hi,
>> >
>> >    There are some program analysis algorithms in clang/lib/Analysis
>> directory. I am wandering if there are more algorithms to come or not. Are
>> there some people working on this? What kind of algorithms are welcome to be
>> part of Clang?
>> >
>> >    I am asking this because I want to help on this part. But I am not
>> sure if source-to-source transformation algorithms are welcome in this
>> community, since many optimization work is done in the LLVM backend.
>> Currently I have implemented to CFG analysis algorithms (building the
>> dominance tree and finding the strong connected components in CFG). I plan
>> to implement more data flow analysis or even pointer analysis algorithms. If
>> these algorithms are useful to people in this community, I would love to
>> submit a patch.
>> >
>> >   I am new to Clang and this community. Hopefully these questions are
>> not naive to you.
>> >
>> >   Thanks.
>> > --------
>> > Guoping
>> > _______________________________________________
>> > 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20111005/32a7ce0d/attachment.html>

More information about the cfe-dev mailing list