[cfe-dev] [F18/AST] Using clang tooling with f18

David Greene via cfe-dev cfe-dev at lists.llvm.org
Sun Oct 14 09:21:47 PDT 2018


F18 currently lowers to LLVM IR, but that is too low-level for the kind of tooling we
want to have.  Clang's tooling works on the AST because it is high-level enough to
express source language concepts and reason about them.

For example, one can't easily write a source-level documentation tool that works
with  LLVM IR.  The same goes for tools like code formatters, syntax highlighters
and anything else that wants to analyze and/or modify source.

                                 -David

________________________________________
From: Marcus Johnson <bumblebritches57 at gmail.com>
Sent: Friday, October 12, 2018 7:20:51 PM
To: David Greene
Cc: Flang development; Clang development
Subject: Re: [cfe-dev] [F18/AST] Using clang tooling with f18

I know absolutely nothing about the AST, but why not just use LLVM's IR?

> On Oct 12, 2018, at 1:58 PM, David Greene via cfe-dev <cfe-dev at lists.llvm.org> wrote:
>
> [Reposted with the correct clang mailing list -- sorry about the
> duplicate...]
>
> Hi all,
>
> We've been having a bit of discussion over on flang-dev and wanted to
> bring in clang people to comment/brainstorm.  Here is the original post
> that kicked this off on flang-dev:
>
>  I was hoping f18 would lower to something akin to clang's AST.
>  Obviously clang's AST doesn't directly apply to Fortran but perhaps
>  some kind of common interface could exist so that clang tools could
>  work with Fortran codes. It would be great to have things like the
>  clang static analyzer and clang-doc for Fortran.
>
>  Some tools will be language-specific of course but it seems like
>  Fortran and C-family languages share enough common concepts that some
>  tooling could work with both, given a common interface.
>  Language-specific tools would work with a more language-specific
>  interface.
>
>  My impression from the presentation is that there's a lot more that
>  could be shared with clang. The messaging system and command-line
>  options infrastructure should be shareable, for example.  Maybe
>  there's already work being done in these areas to make f18 a
>  first-class LLVM project.
>
> Folks raised some concerns/areas to explore:
>
> - Can we represent various Fortran constructs with additions to the
>  clang AST?  For example:
>
>  * Implied DO loops
>  * Array syntax
>  * I/O statements (FORMAT, READ, NAMELIST, etc.)
>  * Array declarations (DIMENSION, etc.)
>  * Array syntax
>  * ...
>
> - Can clang's infrastructure handle various Fortran oddities like
>  non-reserved keyworks and the ability to redefine constants?
>
>  These may primarily be "dusty deck" issues and perhaps for tooling
>  purposes a 98% solution is ok.  F18 still needs to fully handle them,
>  of course.
>
> - Can we modify clang's AST and surrounding infrastructure to re-use
>  bits of clang tooling for f18 or should we create some kind of common
>  tooling interface for clang/f18 tooling that can also support
>  language-specific bits?
>
> - Can this be forward-looking for tooling for other languages (Rust,
>  Chapel, Go, etc.)?
>
> We pretty quickly came to a point where we needed input from clang
> folks, so here we are.  :)
>
>                                 -David
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev



More information about the cfe-dev mailing list