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.
I first looked at CFG::BuildOptions() (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.