<div dir="ltr"><span style="font-size:12.8px">Hi Alexey,</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">As far as checking the base. What's the best way to check if the base is actually "blockIdx"?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 7, 2017 at 6:19 AM, Alexey Knyshev <span dir="ltr"><<a href="mailto:alexey.knyshev@gmail.com" target="_blank">alexey.knyshev@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">You should not check RecordDecl in this manner as soon as it MemberExpr is "composite". I mean you should separately check base & memberDecl.<br><br>According to docs for <a class="m_-8707846353664131725el" href="https://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html#a66dc522ec5732b5e4a1a90bdfe70919f" target="_blank">MeberExpr::getMemberDecl</a><br><span class="m_-8707846353664131725gmail-comment">The returned declaration will be a FieldDecl or (in C++) a VarDecl (for</span><div class="m_-8707846353664131725gmail-line"><a name="m_-8707846353664131725_l02482"></a></div> <span class="m_-8707846353664131725gmail-comment">  /// static data members), a CXXMethodDecl, or an EnumConstantDecl.</span> </div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">2017-12-07 12:21 GMT+03:00 Qiufeng Yu <span dir="ltr"><<a href="mailto:qyu4@ncsu.edu" target="_blank">qyu4@ncsu.edu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I can also use the ASTMatcher to find all MemberExprs, but still can't narrow them down to those only called blockIdx.x and blockIdx.y.<div>My Matcher is following:</div><div><br></div><div>Matcher.addMatcher(memberExpr(<wbr>hasObjectExpression(hasType(cx<wbr>xRecordDecl(hasName("blockIdx.<wbr>x"))))));</div><div>Matcher.addMatcher(memberExpr(<wbr>hasObjectExpression(hasType(cx<wbr>xRecordDecl(hasName("blockIdx.<wbr>y"))))));</div></div><div class="m_-8707846353664131725HOEnZb"><div class="m_-8707846353664131725h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 7, 2017 at 3:55 AM, Qiufeng Yu <span dir="ltr"><<a href="mailto:qyu4@ncsu.edu" target="_blank">qyu4@ncsu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Say the original code is int bx = blockIdx.x, I already found the MemberExpr of this line of code, which is blockIdx.x. But all I have is only this MemberExpr. What I need is the actual string representation of this MemberExpr so that I can perform the string comparison to make sure that this MemberExpr is indeed blockIdx.x, and perform the rewriting process.</div><div class="m_-8707846353664131725m_-3993583207138995794HOEnZb"><div class="m_-8707846353664131725m_-3993583207138995794h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 7, 2017 at 3:48 AM, Alexey Knyshev <span dir="ltr"><<a href="mailto:alexey.knyshev@gmail.com" target="_blank">alexey.knyshev@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi,<br>Do you mean finding AST corresponding to MemberExpr or you already found then and trying to figure out SourceLocation for them?<br><br></div>Regards, Alexey K<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_-8707846353664131725m_-3993583207138995794m_3300794877610126641h5">2017-12-07 11:40 GMT+03:00 Qiufeng Yu via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span>:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_-8707846353664131725m_-3993583207138995794m_3300794877610126641h5"><div dir="ltr">Hi all,<div><br></div><div>I'm new to clang and currently working on a project where I need to rewrite some codes in CUDA source file.</div><div><br></div><div>For example, if I have the following CUDA code:</div><div><br></div><div>int bx = blockIdx.x;</div><div>int by = blockIdx.y;</div><div><br></div><div>I want to rewrite the blockIdx and blockIdx.x and blockIdx.y to some other code:</div><div>int bx = something else;</div><div>int by = something else;</div><div><br></div><div>My problem is that how do I find the MemberExpr blockIdx,x and blockIdx.y?</div><div><br></div><div>I know how to get the MemberExpr, but I have no clue how to extract the name of the MemberExpr in order to know that it is the right MemberExpr for me to rewrite.</div><div><br></div><div>Any help is appreciated.</div><div><br></div><div><br></div><div>Patrick</div></div>
<br></div></div>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><span class="m_-8707846353664131725m_-3993583207138995794m_3300794877610126641HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br><div class="m_-8707846353664131725m_-3993583207138995794m_3300794877610126641m_8732721408193341323gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><a href="https://www.linkedin.com/profile/view?id=AAMAABn6oKQBDhBteiQnWsYm-S9yxT7wQkfWhSw" target="_blank">linkedin.com/profile</a><br><br><a href="http://github.com/alexeyknyshev" target="_blank">github.com/alexeyknyshev</a><span></span><a href="http:///" target="_blank"></a><span></span><br><a href="https://bitbucket.org/alexeyknyshev/" target="_blank">bitbucket.org/alexeyknyshev</a><br></div></div>
</font></span></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><br></div></div><span class="HOEnZb"><font color="#888888">-- <br><div class="m_-8707846353664131725gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><a href="https://www.linkedin.com/profile/view?id=AAMAABn6oKQBDhBteiQnWsYm-S9yxT7wQkfWhSw" target="_blank">linkedin.com/profile</a><br><br><a href="http://github.com/alexeyknyshev" target="_blank">github.com/alexeyknyshev</a><span></span><a href="http:///" target="_blank"></a><span></span><br><a href="https://bitbucket.org/alexeyknyshev/" target="_blank">bitbucket.org/alexeyknyshev</a><br></div></div>
</font></span></div>
</blockquote></div><br></div>