[cfe-dev] How to know whether expression is derived from induction variable?

Pan, Wei wei.pan at intel.com
Thu Sep 26 12:16:16 PDT 2013


It looks like you are calling the wrong function getConditionVariable(), which returns 0 most of time.

http://clang.llvm.org/doxygen/classclang_1_1ForStmt.html#a43f4d356baa047f895978ddc8d64fee0

Weo

________________________________
From: cfe-dev-bounces at cs.uiuc.edu [cfe-dev-bounces at cs.uiuc.edu] on behalf of Madhur Amilkanthwar [madhur13490 at gmail.com]
Sent: Thursday, September 26, 2013 12:58 PM
To: Gabor Kozar
Cc: cfe-dev at cs.uiuc.edu
Subject: Re: [cfe-dev] How to know whether expression is derived from induction variable?

I am very basic thing now
I inherited RecursiveASTVisitor Class and  overloaded function VisitStmt as
bool VisitStmt(Stmt *s)
{
if(isa<ForStmt>(s))
{
std::cout<<"For Statement found\n";
VarDecl *D=cast<ForStmt>(s)->getConditionVariable();
if(D->isLocalVarDecl())
llvm::errs()<<"local";
}
return true;
}
but I am facing runtime error.(seg fault) any clue?



On Thu, Sep 26, 2013 at 7:35 PM, Madhur Amilkanthwar <madhur13490 at gmail.com<mailto:madhur13490 at gmail.com>> wrote:
Ohk..this looks cool. Let me try that. Thanks.


On Thu, Sep 26, 2013 at 6:37 PM, Gabor Kozar <kozargabor at gmail.com<mailto:kozargabor at gmail.com>> wrote:
The simplest probably would be finding all relevant loop nodes, i.e. ForExpr-s, identifying the loop induction variable, i.e. the VarDecl-s (if any), and finally running a RecursiveASTVisitor on its body, looking for a DeclRefExpr referring to any of the VarDecl-s you identified in the previous step.

--
Gábor Kozár -- ShdNx
kozargabor at gmail.com<mailto:kozargabor at gmail.com>



On Thu, Sep 26, 2013, at 15:00, Madhur Amilkanthwar wrote:
Hi,
I am interested in knowing if an expression is derived from loop induction variable or not. As of now, I am able to inspect every expression after locating "if" statement in the code.
Assume following code:
for(int i=0;i<32;i++)
  i=i+2;

in above code, I am able to get access to the expression "i+2" but how should I analyze its LHS and RHS for induction variable?

Any help appreciated.

--
Thank You.
Madhur D. Amilkanthwar
RISE lab,
IIT Madras.
_______________________________________________
cfe-dev mailing list
cfe-dev at cs.uiuc.edu<mailto: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<mailto:cfe-dev at cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




--
Thank You.
Madhur D. Amilkanthwar
RISE lab,
IIT Madras.



--
Thank You.
Madhur D. Amilkanthwar
RISE lab,
IIT Madras.




More information about the cfe-dev mailing list