<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>