[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