<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    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">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">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">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">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">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">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">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">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">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/">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">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">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>