[cfe-dev] getting visit methods right

Rajendra rks at cse.iitb.ac.in
Mon Nov 26 01:51:36 PST 2012


Hi,

I have overridden VisitIfStmt(Stmt* s) and some visit methods for 
binary operators:
- VisitBinAssign(),
- VisitBinAdd() and other arithmetic operators,
- VisitBinGT() and other relational operators

My dilemma is how do I return from different visit methods (or call 
them explicitly)
so that I can perform some analysis on binary operators and use them in 
condition part,
then clause and else clause for IfStmt?  e.g. I want to analyze 
following C program:
int main() {
     int x, y;
     x = 10;
     if (x > 0)
         y = 1;
     else if (x == 0)
         y = 0;
     else
         y = -1;
     return 0;
}

Basic block contains:
    1: int x;
    2: int y;
    3: x = 10
    4: x > 0
    T: if [B6.4]

Now, for condition x > 0 (line 3:) due to VisitBinGT() can get 
following info:
         Relational Op >
         LHS identifier = x
         type: int
         RHS value: 0
 From VisitIfStmt() I can get pointer to condition part, then and else 
clauses.
so, how should I combine IfStmt and information I have due to visit to 
other methods?

Please advise.

- Rajendra



More information about the cfe-dev mailing list