I would love fpc to be based on LLVM backend. C bindings are ok, but wouldn't it be better to fix support for cppclass inside fpc (since it is already there) and create more proper C++ headers.<br><br>I have studied clang project a bit (as C/C++ frontend for LLVM) and it actually makes more sense to me that FPC compiler even though pascal is generally more readable as a language.<br>
CLang SVN: <a href="http://llvm.org/svn/llvm-project/cfe/trunk/lib/">http://llvm.org/svn/llvm-project/cfe/trunk/lib/</a> (and compare that to FPC compiler source)<br>Simple tutorial for new language: <a href="http://llvm.org/docs/tutorial/LangImpl1.html">http://llvm.org/docs/tutorial/LangImpl1.html</a>.<br>
<br>I believe FPC should be first similarly divided into separate blocks (Lexer, Parser, AST, Codegen). It is already, just perhaps more interface based approach (or more like fpcdoc parser is).<br><br>After that people could create even backends for .NET (like Delphi does) and even perhaps Java or XML code dumps (like it was suggested some time ago on this mailing list by someone else).<br>
<br>Another thing is, that I would prefer LLVM backend to be more C++ API compatible than FPC/Delphi even if we loose some FPC features (like RTTI), pascal calling conventions.<br><br>Basically I don't think FPC should just go into LLVM direction, but should support LLVM efforts to create more pluggable backends.<br>
<br>Matej Spiller-Muys<br><br><div class="gmail_quote">On Mon, Nov 16, 2009 at 4:49 PM, Samuel Crow <span dir="ltr"><<a href="mailto:samuraileumas@yahoo.com">samuraileumas@yahoo.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
<br>
> > There are classes to create any type documented at<br>
> <a href="http://llvm.org/docs/ProgrammersManual.html#Type" target="_blank">http://llvm.org/docs/ProgrammersManual.html#Type</a> .  As of the current 2.6<br>
> release there are now more extensive C bindings included with LLVM than were<br>
> previously available.  Once I get the trunk downloaded I'll see about a link to<br>
> the actual documentation on how to use those C bindings.<br>
><br>
> Ok.<br>
<br>
</div>It looks like the in-code documentation in llvm/includes/llvm-c/Core.h contains all of the documentation about using IRBuilder plus wrapping and unwrapping macros for type conversions using the C wrappers.  There are other abstract datatype class templates that aren't included in the C wrappers but we'd need to write separate C wrappers for each use of them anyway.  Let me know if there's anything I can find out for you.<br>

<br>
--Sam Crow<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
<div><div></div><div class="h5">fpc-devel maillist  -  <a href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a><br>
<a href="http://lists.freepascal.org/mailman/listinfo/fpc-devel" target="_blank">http://lists.freepascal.org/mailman/listinfo/fpc-devel</a><br>
</div></div></blockquote></div><br>