<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Thank you for the summary. Don't know about anyone else, but
this helped me a lot. I'm only casually interested in the fortran
efforts and had been getting lost as to which project was being
referenced in various threads.<br>
</p>
<p>Philip<br>
</p>
<div class="moz-cite-prefix">On 2/9/20 2:50 PM, Petr Penzin via
llvm-dev wrote:<br>
</div>
<blockquote type="cite"
cite="mid:29017191-a0d2-9320-1b25-607ec1f5369e@gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Let me try to summarize what those are - hopefully this can be
useful for somebody. Please this write up with a grain of salt
(particularly on Fortran support), as I don't follow every project
here very closely.<br>
<br>
In somewhat chronological order:<br>
<br>
*Flang (old)*<br>
<a class="moz-txt-link-freetext"
href="https://github.com/llvm-flang/flang"
moz-do-not-send="true">https://github.com/llvm-flang/flang</a><br>
A deeply modified fork of Clang. Originally a GSoC project, but
received contributions from numerous people after. Uses Clang-like
AST, compiler diagnosics, tablegen, Lit for testing and so on.
Recursive descent parser, similar to Clang's. Abandoned in favor
of new Flang. Fortran support: F77, F90, and F03 (all partial)<br>
<br>
*Flang (new)*<br>
<a class="moz-txt-link-freetext"
href="https://github.com/flang-compiler/flang"
moz-do-not-send="true">https://github.com/flang-compiler/flang</a><br>
Unrelated effort under the same name. Was publicly announced as
"derived from PGI Fortran compiler" [1], which is an existing (and
relatively old) code base with a lot more features. Uses two stage
compilation with two different executables (apart from the driver)
doing the work. It emits some form of textual IR between stages
and produces LLVM IR as text before handing it back to the rest of
toolchain (via Clang). This project does not use any LLVM
libraries directly. Its frontend employs its own parser generator
[2]. If I remember correctly, it might have some issues with more
complex features from Fortran 2003 or 2008 and newer standards,
but is pretty solid at everything older. Despite its quirks it is
the most used and most complete compiler on this list.<br>
<br>
[1]:
<a class="moz-txt-link-freetext"
href="https://www.llnl.gov/news/nnsa-national-labs-team-nvidia-develop-open-source-fortran-compiler-technology"
moz-do-not-send="true">https://www.llnl.gov/news/nnsa-national-labs-team-nvidia-develop-open-source-fortran-compiler-technology</a><br>
[2]:
<a class="moz-txt-link-freetext"
href="https://github.com/flang-compiler/flang/tree/master/tools/flang1/utils/prstab"
moz-do-not-send="true">https://github.com/flang-compiler/flang/tree/master/tools/flang1/utils/prstab</a><br>
<br>
*f18*<br>
<a class="moz-txt-link-freetext"
href="https://github.com/flang-compiler/f18"
moz-do-not-send="true">https://github.com/flang-compiler/f18</a><br>
Ground-up rework of (new) Flang. The only entry on the list that
does not perform full compilation yet. It was announced that it
would eventually emit MLIR. It looks like parser is the only
complete component as of today. As for internals, there is an
evaluation [3] with some slides [4] posted on flang-dev list -
looks like covering writing tools based on f18. A quick look at
the sources shows some interesting use of overloaded '>>'
operator [5] resembling monadic combination in functional
programming, which is confirmed in one of the bug reports [6]. The
rest of the same bug report is worth reading as well, as this
programming style might lead to high resource usage while building
the compiler.<br>
<br>
[3]: <a class="moz-txt-link-freetext"
href="http://lists.llvm.org/pipermail/flang-dev/2019-December/000089.html"
moz-do-not-send="true">http://lists.llvm.org/pipermail/flang-dev/2019-December/000089.html</a><br>
[4]:
<a class="moz-txt-link-freetext"
href="http://lists.llvm.org/pipermail/flang-dev/attachments/20191202/6e7c1e51/attachment-0001.pdf"
moz-do-not-send="true">http://lists.llvm.org/pipermail/flang-dev/attachments/20191202/6e7c1e51/attachment-0001.pdf</a><br>
[5]:
<a class="moz-txt-link-freetext"
href="https://github.com/flang-compiler/f18/blob/master/lib/parser/stmt-parser.h#L24"
moz-do-not-send="true">https://github.com/flang-compiler/f18/blob/master/lib/parser/stmt-parser.h#L24</a><br>
[6]: <a class="moz-txt-link-freetext"
href="https://github.com/flang-compiler/f18/issues/431#issuecomment-487664759"
moz-do-not-send="true">https://github.com/flang-compiler/f18/issues/431#issuecomment-487664759</a><br>
<br>
*Fort*<br>
<a class="moz-txt-link-freetext"
href="https://github.com/llvm-fortran/fort/"
moz-do-not-send="true">https://github.com/llvm-fortran/fort/</a><br>
Renamed fork of old flang. Compatible with lasted LLVM, some
improvements have been added. Probably the most Clang-like
compiler on the list. Uses AST based on Clang's, tablegen, Lit,
mostly same LLVM libraries which Clang uses. Just like its
predecessor lacks driver. Supports parts of Fortan 77, Fortan 90,
and Fortran 2003. <br>
<br>
*FC*<br>
<a class="moz-txt-link-freetext"
href="https://github.com/compiler-tree-technologies/fc"
moz-do-not-send="true">https://github.com/compiler-tree-technologies/fc</a><br>
Not related to any of the above, but seems to be in some ways
similar to Clang/(old)Flang/Fort. Recursive descent parser; emits
MLIR. Does not use tablegen, has a different way of throwing
errors, has no builtin diagnostics, also no driver. Project has
only seven commits to this date. Not clear on the Fortran standard
support (has flags to support f77 and f95), the claim that it can
compile a couple of larger application from SPEC, but I can't find
which ones.<br>
<br>
<br>
<div class="moz-cite-prefix">On 1/13/20 9:02 AM, James Y Knight
via llvm-dev wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAA2zVHqSOy5=j+802coGBRuhtXNqb0S2JKKhPEu5Db+-4=hx7A@mail.gmail.com">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">Neat, another fortran compiler option.
<div><br>
</div>
<div>Does anyone have a list/comparison of all the LLVM
fortran compilers? I'm not really tracking this, since
Fortran isn't really my area of expertise, but I've seen
the following. Perhaps there are even more?
<div>
<div><br>
</div>
<div>"Flang". The original of the name, I think?
Abandoned.<br>
<a href="https://github.com/llvm-flang/flang"
target="_blank" moz-do-not-send="true">https://github.com/llvm-flang/flang</a><br>
"Fort" -- fork of the above flang, renamed. Seems
active.<br>
<a href="https://github.com/llvm-fortran/fort/"
target="_blank" moz-do-not-send="true">https://github.com/llvm-fortran/fort/</a><br>
<br>
</div>
<div>"Flag". Different from the other "flang". Active,
but deprecated in favor of f18.</div>
<div><a href="https://github.com/flang-compiler/flang"
target="_blank" moz-do-not-send="true">https://github.com/flang-compiler/flang</a><br>
</div>
<div>"f18". Rewrite-from-scratch (?) of adjacent
"flang". Active, but not fully-functional yet (I
think?).</div>
<div><a href="https://github.com/flang-compiler/f18"
target="_blank" moz-do-not-send="true">https://github.com/flang-compiler/f18</a><br>
</div>
<div><br>
</div>
<div>
<div>"FC". Newly-developed, independent of the other
compilers. Active. (But this source-code dates
from the previous announcement, not yet updated
with latest developments):<br>
<a
href="https://github.com/compiler-tree-technologies/fc"
target="_blank" moz-do-not-send="true">https://github.com/compiler-tree-technologies/fc</a><br>
</div>
</div>
<div><br>
</div>
<div>I don't know how any of these compare with each
other, nor why we have so many. I have no opinion on
which or whether any of these should be "blessed",
nor do I really want to become educated enough on
this topic to gain such an opinion personally.</div>
<div><br>
</div>
<div>But, given that there appear to be at least 3
fortran compilers under active development by
different people, I would love to be reassured that
such a comparison has been done, and that we are
selecting one of them for good reasons. It'd be
great if someone (or multiple someones) could post a
summary/comparison of what these things all are, and
why one is the right path forward vs another.</div>
</div>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Jan 13, 2020 at
2:46 AM Prashanth N R via llvm-dev <<a
href="mailto:llvm-dev@lists.llvm.org"
moz-do-not-send="true">llvm-dev@lists.llvm.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div dir="ltr">Hi Chris-
<div>We are mostly cleaning up the code for open
sourcing. Early code drop will happen in a day or two
and will continue through this week. We would love to
work with the rest of the community on this. </div>
<div><br>
</div>
<div>thanks,</div>
<div>-Prashanth</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Mon, Jan 13, 2020
at 11:17 AM Chris Lattner <<a
href="mailto:clattner@nondot.org" target="_blank"
moz-do-not-send="true">clattner@nondot.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>Agreed! Is the code already available? What are
your plans for it, and are you interested in
collaboration with the rest of the LLVM community?
<div><br>
</div>
<div>-Chris<br>
<div><br>
<blockquote type="cite">
<div>On Jan 11, 2020, at 11:58 AM, Finkel, Hal
J. via llvm-dev <<a
href="mailto:llvm-dev@lists.llvm.org"
target="_blank" moz-do-not-send="true">llvm-dev@lists.llvm.org</a>>
wrote:</div>
<br>
<div>
<div>
<p>Hi, Prashanth,</p>
<p>That's great news! It sounds like
you've made a lot of progress, and I
certainly hope that you can make your
source available under the LLVM license
and that we can all work together going
forward.</p>
<p> -Hal<br>
</p>
<div>On 1/11/20 12:52 PM, Prashanth N R
via llvm-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi-
<div><br>
</div>
<div>In August we made an
announcement of "FC: A new fortran
front end" [1]. At that time to get
an end-to-end solution, we made FC
to emit LLVM IR directly. At
present, we have upgraded FC to emit
MLIR. Currently the language
supported is close to Fortran-95.
Apart from 400+ unit test cases, out
framework passes two SPEC-2017
benchmarks successfully. Currently
we are cleaning up the code and plan
to open source the same in a week or
so.</div>
<div><br>
</div>
<div>Apart from the front end changes,
we have defined a new high level
dialect in MLIR for representing
Fortran. We have defined a new Loop
Nest Optimization framework along
with one Loop Nest Optimization in
it for the time being. Also we have
supported 4 OpenMP constructs and
way to express the same in MLIR
framework. </div>
<div><br>
</div>
<div>Entire code is in the spirit of
LLVM. If the community is
interested, we would like to work
with the community and move
forward. </div>
<div><br>
</div>
<div>thanks,</div>
<div>-Prashanth</div>
<div><br>
</div>
<div>PS: We did try to use F18 for a
while and hit the issues raised in
[2], [3].</div>
<div><br>
</div>
<div>1. <a
href="http://lists.llvm.org/pipermail/llvm-dev/2019-August/134620.html"
target="_blank"
moz-do-not-send="true">http://lists.llvm.org/pipermail/llvm-dev/2019-August/134620.html</a></div>
<div>2. <a
href="http://lists.llvm.org/pipermail/llvm-dev/2020-January/138069.html"
target="_blank"
moz-do-not-send="true">http://lists.llvm.org/pipermail/llvm-dev/2020-January/138069.html</a></div>
<div>3. <a
href="http://lists.llvm.org/pipermail/flang-dev/attachments/20191202/6e7c1e51/attachment-0001.pdf"
target="_blank"
moz-do-not-send="true">http://lists.llvm.org/pipermail/flang-dev/attachments/20191202/6e7c1e51/attachment-0001.pdf</a></div>
<div>OR <a
href="http://lists.llvm.org/pipermail/flang-dev/2019-December/000089.html"
target="_blank"
moz-do-not-send="true">http://lists.llvm.org/pipermail/flang-dev/2019-December/000089.html</a></div>
<div><br>
</div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" moz-do-not-send="true">llvm-dev@lists.llvm.org</a>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<pre cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org"
target="_blank" moz-do-not-send="true">llvm-dev@lists.llvm.org</a><br>
<a
href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
target="_blank" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank"
moz-do-not-send="true">llvm-dev@lists.llvm.org</a><br>
<a
href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org" moz-do-not-send="true">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
</body>
</html>