<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><div><blockquote type="cite" class=""><div class="">On Dec 10, 2015, at 11:43 AM, Daniel Kats <<a href="mailto:dbkats@cs.toronto.edu" class="">dbkats@cs.toronto.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class="">Hi Jason,<br class=""><br class=""></div>The benefit of clang-cl is it sets up all the include headers for libclang on Windows, which I am having trouble specifying to libclang directly.</div></div></div></div></div></blockquote><div><br class=""></div><div>clang-cl is mostly for parsing cl.exe command line arguments. You can get windows search paths (and other windows behaviors) by setting an appropriate target in the command line arguments you use to initialize the translation unit (e.g -target x86_64-pc-windows).</div><div class=""><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class="">Also, in the Python bindings documentation for clang, it says that the index.read function:<br class=""><br class=""> <span class="pl-s"><span class="pl-pds">"""</span>Load a TranslationUnit from the given AST file.<span class="pl-pds">"""<br class=""><br class=""></span></span></div><span class="pl-s"><span class="pl-pds">Maybe I misunderstand what that means, but is it not meant to load AST files generated by -emit-ast or -ast-dump?<br class=""></span></span></div></div></div></div></blockquote><div><br class=""></div><div><div class="">-ast-dump doesn’t write an AST file. It prints out a textual representation of the AST for human consumption. There are command line options for writing a serialized AST file (e.g. the ones related to PCH and modules), and they can probably be loaded by libclang, but I would recommend writing the files with libclang in the first place.</div><div class=""><br class=""></div><div class="">Jason</div><div class=""><br class=""></div></div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote"><div dir="ltr" class="">On Thu, 10 Dec 2015 at 13:00 Jason Haslam via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Daniel,<br class="">
<br class="">
The AST dump is a debugging tool. It’s not the same thing as the serialized representation of a translation unit. Use libclang to parse and serialize your header instead of doing from the command line with clang-cl.<br class="">
<br class="">
Jason<br class="">
<br class="">
<br class="">
> On Dec 7, 2015, at 2:54 PM, Daniel Kats via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" class="">cfe-dev@lists.llvm.org</a>> wrote:<br class="">
><br class="">
> Hi,<br class="">
><br class="">
> I am have generated a clang AST by running these commands on Windows on the Visual Studio command-line:<br class="">
><br class="">
> clang-cl <header-name> -Xclang -ast-dump -fsyntax-only -fno-color-diagnostics -w<br class="">
><br class="">
>  And saved it in a file f.ast<br class="">
><br class="">
> I now want to take that file as input into a Python script, so I wrote this code:<br class="">
><br class="">
> Config.set_library_fie(libclang_path)<br class="">
> index = Index.create()<br class="">
> logging.debug( "Reading AST file...")<br class="">
> tu = index.read("f.ast")<br class="">
> logging.debug( "done parsing AST" )<br class="">
> # other stuff below<br class="">
><br class="">
> When I run this, I see command-line output:<br class="">
> "Reading AST file..."<br class="">
><br class="">
> And I get a popup indicating a C/C++ error in libclang.dll:<br class="">
> "Expression: ((End-Start) & 3) == 0 && "Bitcode stream not a multiple of 4 bytes""<br class="">
><br class="">
> Do you know why this happens, and how to fix?<br class="">
><br class="">
> - Daniel<br class="">
><br class="">
> _______________________________________________<br class="">
> cfe-dev mailing list<br class="">
> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank" class="">cfe-dev@lists.llvm.org</a><br class="">
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br class="">
<br class="">
_______________________________________________<br class="">
cfe-dev mailing list<br class="">
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" class="">cfe-dev@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></div></body></html>