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

Madhur Amilkanthwar madhur13490 at gmail.com
Thu Sep 26 12:19:45 PDT 2013


But then which function is expected? Only getConditionVariable() returns
VarDecl.
I just want to know induction var and all vars which are derived from
induction var.



On Fri, Sep 27, 2013 at 12:46 AM, Pan, Wei <wei.pan at intel.com> wrote:

>  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> 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>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
>>>
>>>
>>>
>>> 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
>>>  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
>>>
>>>
>>
>>
>>  --
>> Thank You.
>> Madhur D. Amilkanthwar
>> RISE lab,
>> IIT Madras.
>>
>
>
>
>  --
> Thank You.
> Madhur D. Amilkanthwar
> RISE lab,
> IIT Madras.
>



-- 
Thank You.
Madhur D. Amilkanthwar
RISE lab,
IIT Madras.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130927/b9f44e31/attachment.html>


More information about the cfe-dev mailing list