[cfe-dev] Clang CFG - To build a variant of CFG

Artem Dergachev via cfe-dev cfe-dev at lists.llvm.org
Sat Jun 16 20:23:53 PDT 2018


Yep, you've found the right piece of code, and you should be able to 
tweak it to change the CFG in that manner. CFGBuilder is solely 
responsible for the CFG.

I also want to point out that the current CFG is correct: it reflects 
the short-circuit nature of logical operators. So i'm surprised you need 
this change.

There is a selection of existing CFG-based analyses in lib/Analysis, you 
may be able to learn from them or even re-use some of them. And we've 
got the whole Static Analyzer that performs symbolic execution over the CFG.

On 6/14/18 9:45 PM, Shamiek Mangipudi via cfe-dev wrote:
> Hi,
>
> I recently started working on control flow analysis of C programs 
> using CFG generated by clang. I noticed that clang generates basic 
> blocks for each condition of a compound condition it encounters in if 
> statment (or in loop conditions). I wanted to have only one basic 
> basic with the entire compound condition instead of having basic 
> blocks for each condition.
>
> I am outlining my attempts and the direction in which I tried. Please 
> let me know if there is a better way to what I am trying to achieve or 
> I should take an entirely new direction.
>
> Thanks.
> Shamiek
>
> My attempts:
> I first looked at CFG::BuildOptions() 
> (https://clang.llvm.org/doxygen/classclang_1_1CFG_1_1BuildOptions.html 
> <https://clang.llvm.org/doxygen/classclang_1_1CFG_1_1BuildOptions.html>) and 
> did not find anything there.
>
> Then I went to to CFGBuilder::VisitIfStmt and found the line that 
> causes creation of basic blocks for individual conditions of the 
> compound condition 
> (https://clang.llvm.org/doxygen/CFG_8cpp_source.html#l02180). Should I 
> try and change the code here or there might be deeper implications for 
> changing code here. Please suggest.
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list