<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 8, 2020 at 10:32 AM Richard Barton via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">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 lang="EN-GB">
<div class="gmail-m_-7873312553387449774WordSection1">
<p class="MsoNormal">Hi Eric, David, all<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I work with Peter at Arm in a team of 5 engineers working on F18, and will continue as it becomes llvm-project/flang. We depend on Fortran support in (PGI/Nvidia) flang for our commercial Fortran compiler and will move over to llvm-project/flang
 (I'll call it Flang from now on) when it is ready so we are committed long-term to the technology and the community. We have a further 12 or so engineers working on LLVM core codegen, mostly for Arm’s SVE architecture, and we have a long-term involvement and
 commitment to the LLVM project as a whole.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I totally agree with your points that Flang as it stands is not fully integrated into LLVM. Hal has explained the issue about Flang not using LLVM APIs for codegen so hopefully you will agree that will get better over time. The next large
 development in Flang will be to add the lowering code from the syntax tree to MLIR, which is now an LLVM API. This code is being prototyped in a separate branch of Flang [1], but Eric at Nvidia will start to land the changes soon.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I think your point on usage of LLVM data structures and support libraries is spot on and we need to take that on board. Over time we want Flang to use more of the common LLVM infrastructure and I think that being a part of the monorepo
 should help this to happen. <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">At Arm, we have worked on integrating Flang into Clang's driver [2] [3] [4] and we are trying to follow the existing structure of the driver and to take advantage of common functionality as much as possible in that exercise. I should also
 say that we are working on a patch to Flang that adds testing using llvm-lit/FileCheck in the style of llvm projects [5]. We'll be adding all tests for the new driver as lit tests. We are also working internally on porting over the existing Flang tests that
 use bespoke scripts to using lit (this code has not made it to github yet.)<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">As a community, we are also trying as much as possible to follow the LLVM coding style in Flang [6] and other design principles like modularity so each part of the compiler can be tested in isolation.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Our rationale for contributing Flang to LLVM at this point rather than waiting is so that we can work on integrating it more closely with LLVM as a community effort, in tree. The longer we develop Flang as a separate entity, the more its
 community ethos, its processes, its code style and structure, etc. will likely diverge from the LLVM norms. We think that the eventual inclusion Flang would be harder on that side even though the code itself may make more use of LLVM APIs and datastructures.
 I don’t think there is a right or wrong answer but this is the position we support at Arm and we look forward to working with the community to improve Flang in the ways you suggest.</p></div></div></blockquote><div><br>I'll say, FWIW - that I tend to agree with this, that I'm happy to see this developed further in tree, even if it's not LLVM-y right now. Having more of the revision history in-tree, bisectable, etc, seems good to me & my biggest concern is around community cross pollination to make sure it doesn't end up isolated. I know some of the names of the folks working across f18/flang and LLVM & hope that continues/grows (& of course this shouldn't be dependent on who's names I recognize or don't - the community is large enough that there are going to be different fairly non-overlapping subgroups, etc).<br><br>(just chiming in here to say I'm personally not opposed to flang going in-tree as-is - my reason for the earlier email was to express a few broad concerns I'd heard from the community, get some other folks in here for visibility & make sure this wasn't just a "it's happening because no one's paying attention" kind of thing)<br><br>(as for style - at least a few things that stood out at a glance: a bunch of else-after-return, and a lot of bracing on single line blocks (technically that latter one isn't written in the style guide, but it's pretty pervasive across the LLVM project))<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 lang="EN-GB"><div class="gmail-m_-7873312553387449774WordSection1"><p class="MsoNormal"><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Yours<u></u><u></u></p>
<p class="MsoNormal">Rich<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">[1] <a href="https://github.com/schweitzpgi/f18/tree/f18" target="_blank">https://github.com/schweitzpgi/f18/tree/f18</a>
<u></u><u></u></p>
<p class="MsoNormal">[2] <a href="https://reviews.llvm.org/D63607" target="_blank">https://reviews.llvm.org/D63607</a><u></u><u></u></p>
<p class="MsoNormal">[3] <a href="https://github.com/flang-compiler/f18/pull/759" target="_blank">
https://github.com/flang-compiler/f18/pull/759</a><u></u><u></u></p>
<p class="MsoNormal">[4] <a href="https://github.com/flang-compiler/f18/pull/762" target="_blank">
https://github.com/flang-compiler/f18/pull/762</a> and <a href="https://github.com/flang-compiler/f18/pull/763" target="_blank">
https://github.com/flang-compiler/f18/pull/763</a><u></u><u></u></p>
<p class="MsoNormal">[5] <a href="https://github.com/flang-compiler/f18/pull/861" target="_blank">
https://github.com/flang-compiler/f18/pull/861</a><u></u><u></u></p>
<p class="MsoNormal">[6] <a href="https://github.com/flang-compiler/f18/blob/master/documentation/C%2B%2Bstyle.md" target="_blank">
https://github.com/flang-compiler/f18/blob/master/documentation/C%2B%2Bstyle.md</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>>
<b>On Behalf Of </b>Eric Christopher via llvm-dev<br>
<b>Sent:</b> 8 January, 2020 01:48<br>
<b>To:</b> Finkel, Hal J. <<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>><br>
<b>Cc:</b> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>; Mike Edwards <<a href="mailto:medwards@llvm.org" target="_blank">medwards@llvm.org</a>><br>
<b>Subject:</b> Re: [llvm-dev] Flang landing in the monorepo - next Monday!<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jan 7, 2020 at 5:29 PM Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Hi Hal,<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jan 7, 2020 at 3:38 PM Finkel, Hal J. via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<p><u></u> <u></u></p>
<div>
<p class="MsoNormal">On 1/7/20 4:38 PM, Doerfert, Johannes via llvm-dev wrote:<u></u><u></u></p>
</div>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>On 01/07, David Blaikie via llvm-dev wrote:<u></u><u></u></pre>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>Hey Peter - would you be able to link to/describe the history on this<u></u><u></u></pre>
<pre>process/decision. I can find one old thread where this was first proposed (<u></u><u></u></pre>
<pre><a href="http://lists.llvm.org/pipermail/llvm-dev/2019-February/130497.html" target="_blank">http://lists.llvm.org/pipermail/llvm-dev/2019-February/130497.html</a> ) with<u></u><u></u></pre>
<pre>some general positive responses and a lot of questions.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>I see there's a flang-dev list, though I'm not sure where code review is<u></u><u></u></pre>
<pre>happening (is there flang-commits or equivalent?) as there's not much<u></u><u></u></pre>
<pre>chatter on the mailing list that I can see.<u></u><u></u></pre>
</blockquote>
<pre>There is a flang-commits. We have everything set up to use Phabricator<u></u><u></u></pre>
<pre>as MLIR did.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>& I'm a bit concerned about flang, already a project with no LLVM API<u></u><u></u></pre>
<pre>usage, it seems, and a community that doesn't currently look like it has<u></u><u></u></pre>
<pre>much overlap with the LLVM developer community (a very rough glance at<u></u><u></u></pre>
<pre>flang-dev participants, but I could be wrong - the LLVM community is large,<u></u><u></u></pre>
<pre>to be sure) - I'm concerned that this might create a not very well<u></u><u></u></pre>
<pre>integrated community, as we saw in the past with lldb, for instance.<u></u><u></u></pre>
</blockquote>
<pre>I think I mentioned this before but some people are waiting for the move<u></u><u></u></pre>
<pre>to be able to actually participate in the Flang development. So the<u></u><u></u></pre>
<pre>current github contributions do not necessarily reflect the LLVM<u></u><u></u></pre>
<pre>developers that will be involved.<u></u><u></u></pre>
</blockquote>
<p><u></u> <u></u></p>
<p>I'll add to this that a number of us who have been involved with LLVM for a long time are involved in guiding the Flang project. While it's certainly true that a few of the people working hard on Flang are new to the LLVM community, there is a reasonable
 overlap with the existing LLVM community in the overall effort.<u></u><u></u></p>
<p><u></u> <u></u></p>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>On flang-dev [0] we have long term LLVM developers and people that join<u></u><u></u></pre>
<pre>the LLVM developers community with the merge of Flang but even those<u></u><u></u></pre>
<pre>already actively participated at the LLVM-Dev!<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>The API usage is a valid concern, among others, which will require code<u></u><u></u></pre>
<pre>changes in the near future.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>[0] <a href="http://lists.llvm.org/pipermail/flang-dev/2019-December/author.html" target="_blank">http://lists.llvm.org/pipermail/flang-dev/2019-December/author.html</a><u></u><u></u></pre>
</blockquote>
<p><u></u> <u></u></p>
<p>The other thing that I'll add here is that the existing Flang development has been broad and not deep - the development started with the lexical analysis (and preprocessor), then the semantic analysis, and so on. It is only very recently that any work on
 actual code generation has begun, and there, the initial focus has been on targeting LLVM via MLIR. I'm not saying that there aren't more places to use LLVM APIs (e.g., filesystem abstractions, ADT, etc.) -- there are -- but that's something we're planning
 to improve over time.<u></u><u></u></p>
<p>At a high level, however, the whole point of this Flang project is produce an LLVM-community-integrated Fortran frontend for LLVM. The current developers of the project, which is a growing community, are committed to realizing that outcome and are open to
 feedback on code structure, API usage, and other aspects of integrating with the rest of the LLVM project.<u></u><u></u></p>
</div>
</blockquote>
<div>
<p class="MsoNormal">I added you to the original thread when I was replying because I knew you were around this effort, it might be nice to see if you can respond to the other thread too.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">A lot of my concerns are echoed by David here and I have additional concerns as well. I don't think the project is ready for inclusion into the main llvm tree as I don't see the point right now. There's nothing llvm about it.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">To elaborate a bit because this almost assuredly comes off poorly (and I apologize):<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I am in favor of having a flang front end in tree. I have concerns about the design of flang versus other front ends, the lack of llvm based library use, and a number of other things that I tried to enumerate in previous emails. I don't
 know if anything has changed and the responses I got back originally were "we're going to do it anyway" so it didn't leave much room for engagement.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">-eric<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<div>
<p class="MsoNormal">-eric<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<p> -Hal<u></u><u></u></p>
<p><u></u> <u></u></p>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>Thanks,<u></u><u></u></pre>
<pre>  Johannes<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>On Tue, Jan 7, 2020 at 6:04 AM Peter Waller via llvm-dev <<u></u><u></u></pre>
<pre><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>Hi All,<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>As discussed before Christmas, this is a reminder that we intend to<u></u><u></u></pre>
<pre>merge flang on the 13th January (next Monday) before the llvm-10 branch.<u></u><u></u></pre>
<pre>At the moment I'm proposing to do it at 10am GMT. I can be flexible on<u></u><u></u></pre>
<pre>this point if it requires close coordination with anyone in another<u></u><u></u></pre>
<pre>timezone, just let me know.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>Previous discussion was in [llvm-dev] Flang landing in the monorepo<u></u><u></u></pre>
<pre><a href="http://lists.llvm.org/pipermail/llvm-dev/2019-December/137661.html" target="_blank"><http://lists.llvm.org/pipermail/llvm-dev/2019-December/137661.html></a>.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>The current plan of action is summarized at<u></u><u></u></pre>
<pre><a href="https://github.com/flang-compiler/f18/issues/876" target="_blank"><https://github.com/flang-compiler/f18/issues/876></a>.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>The result will look a lot like the recent MLIR merge from 24th Dec:<u></u><u></u></pre>
<pre><a href="https://github.com/llvm/llvm-project/commits/0f0d0ed1c78" target="_blank"><https://github.com/llvm/llvm-project/commits/0f0d0ed1c78></a>, commit<u></u><u></u></pre>
<pre>0f0d0ed1c78 in the llvm-project monorepo.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>Once it is done I'll mail the list. If you want to coordinate with me,<u></u><u></u></pre>
<pre>please get in touch.<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>Regards,<u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre>- Peter<u></u><u></u></pre>
<pre>_______________________________________________<u></u><u></u></pre>
<pre>LLVM Developers mailing list<u></u><u></u></pre>
<pre><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><u></u><u></u></pre>
<pre><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></pre>
<pre><u></u> <u></u></pre>
</blockquote>
</blockquote>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<pre>_______________________________________________<u></u><u></u></pre>
<pre>LLVM Developers mailing list<u></u><u></u></pre>
<pre><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><u></u><u></u></pre>
<pre><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></pre>
</blockquote>
<p class="MsoNormal"><u></u> <u></u></p>
<pre>_______________________________________________<u></u><u></u></pre>
<pre>LLVM Developers mailing list<u></u><u></u></pre>
<pre><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><u></u><u></u></pre>
<pre><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></pre>
</blockquote>
<pre>-- <u></u><u></u></pre>
<pre>Hal Finkel<u></u><u></u></pre>
<pre>Lead, Compiler Technology and Programming Languages<u></u><u></u></pre>
<pre>Leadership Computing Facility<u></u><u></u></pre>
<pre>Argonne National Laboratory<u></u><u></u></pre>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>

_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>