<div dir="ltr"><div><div><div>I believe the short answer is "no". <br><br></div>AST is per "compilation unit", and as such, test.c and Main.c is two compilation units. You will need to write some code of your own to analyze the total set of AST's from all your compilation units to determine that. Which may not be so hard for this simple example, but gets quite complex if you start having many and large compilation units - and want to determine ALL global variables are initialized [and of course, "not initializing" global variables is well-defined by the C and C++ specifications - in other words, `int var;` and `int var = 0;` are equivalent constructs].<br><br></div>I'm interpreting the legal terms of your footer of your email to mean that you intended to send this to the clang mailing list, and as such I am an intended recipient and have been authorized by KPIT Technologies Ltd, to read and retain your email. If this is not a correct interpretation, please destroy this email.<br><br>--<br></div>Mats<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 12 December 2016 at 13:54, Sunny Billava via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div link="#0563C1" vlink="#954F72" lang="EN-US">
<div class="m_4914313174768443583WordSection1">
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040">Hello All,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040">For a clang tool based on RecursiveASTVisitor, would like to detect the definition of an extern variable.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040">For the below code file samples, while traversing the Main.c, can we detect the “var” is defined & initialized in test.c<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040">Below are the file definition<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#404040"><u></u> <u></u></span></p>
<p class="MsoNormal"><u><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d"><<<<Main.c>>>><u></u><u></u></span></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d">#include "h1.h"<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d">int main()<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d">{<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d">        var = 10;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d"><u></u> <u></u></span></p>
<p class="MsoNormal"><u><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d"><<<<h1.h>>>><u></u><u></u></span></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d">extern int var;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d"><u></u> <u></u></span></p>
<p class="MsoNormal"><u><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d" lang="PT-BR"><<<<test.c>>>><u></u><u></u></span></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d" lang="PT-BR">#include "h1.h"<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#0d0d0d" lang="PT-BR">int var = 11;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:gray" lang="PT-BR"><u></u> <u></u></span></p>
</div>
This message contains information that may be privileged or confidential and is the property of the KPIT Technologies Ltd. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print,
 retain copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message. KPIT Technologies Ltd. does not accept any liability for virus
 infected mails.
</div>

<br>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">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><br></div>