public inbox for fortran@gcc.gnu.org
 help / color / mirror / Atom feed
From: Andrew Pinski <pinskia@gmail.com>
To: Ben Boeckel <ben.boeckel@kitware.com>
Cc: gcc-patches@gcc.gnu.org, jason@redhat.com, nathan@acm.org,
	 fortran@gcc.gnu.org, gcc@gcc.gnu.org, brad.king@kitware.com
Subject: Re: [PATCH v5 0/5] P1689R5 support
Date: Thu, 2 Feb 2023 20:07:43 -0800	[thread overview]
Message-ID: <CA+=Sn1nordTO+5hjiLO=6D8f2DSWqx+xMKF1oNNpKwgNrXhp+Q@mail.gmail.com> (raw)
In-Reply-To: <20230125210636.2960049-1-ben.boeckel@kitware.com>

On Wed, Jan 25, 2023 at 1:07 PM Ben Boeckel via Fortran
<fortran@gcc.gnu.org> wrote:
>
> Hi,
>
> This patch series adds initial support for ISO C++'s [P1689R5][], a
> format for describing C++ module requirements and provisions based on
> the source code. This is required because compiling C++ with modules is
> not embarrassingly parallel and need to be ordered to ensure that
> `import some_module;` can be satisfied in time by making sure that any
> TU with `export import some_module;` is compiled first.


I like how folks are complaining that GCC outputs POSIX makefile
syntax from GCC's dependency files which are supposed to be in POSIX
Makefile syntax.
It seems like rather the build tools are people like to use are not
understanding POSIX makefile syntax any more rather.
Also I am not a fan of json, it is too verbose for no use. Maybe it is
time to go back to standardizing a new POSIX makefile syntax rather
than changing C++ here.

Thanks,
Andrew Pinski

>
> [P1689R5]: https://isocpp.org/files/papers/P1689R5.html
>
> I've also added patches to include imported module CMI files and the
> module mapper file as dependencies of the compilation. I briefly looked
> into adding dependencies on response files as well, but that appeared to
> need some code contortions to have a `class mkdeps` available before
> parsing the command line or to keep the information around until one was
> made.
>
> I'd like feedback on the approach taken here with respect to the
> user-visible flags. I'll also note that header units are not supported
> at this time because the current `-E` behavior with respect to `import
> <some_header>;` is to search for an appropriate `.gcm` file which is not
> something such a "scan" can support. A new mode will likely need to be
> created (e.g., replacing `-E` with `-fc++-module-scanning` or something)
> where headers are looked up "normally" and processed only as much as
> scanning requires.
>
> FWIW, Clang as taken an alternate approach with its `clang-scan-deps`
> tool rather than using the compiler directly.
>
> Thanks,
>
> --Ben
>
> ---
> v4 -> v5:
>
> - add dependency tracking for imported modules to `-MF`
> - add dependency tracking for static module mapper files given to
>   `-fmodule-mapper=`
>
> v3 -> v4:
>
> - add missing spaces between function names and arguments
>
> v2 -> v3:
>
> - changelog entries moved to commit messages
> - documentation updated/added in the UTF-8 routine editing
>
> v1 -> v2:
>
> - removal of the `deps_write(extra)` parameter to option-checking where
>   ndeeded
> - default parameter of `cpp_finish(fdeps_stream = NULL)`
> - unification of libcpp UTF-8 validity functions from v1
> - test cases for flag parsing states (depflags-*) and p1689 output
>   (p1689-*)
>
> Ben Boeckel (5):
>   libcpp: reject codepoints above 0x10FFFF
>   libcpp: add a function to determine UTF-8 validity of a C string
>   p1689r5: initial support
>   c++modules: report imported CMI files as dependencies
>   c++modules: report module mapper files as a dependency
>
>  gcc/c-family/c-opts.cc                        |  40 +++-
>  gcc/c-family/c.opt                            |  12 +
>  gcc/cp/mapper-client.cc                       |   4 +
>  gcc/cp/mapper-client.h                        |   1 +
>  gcc/cp/module.cc                              |  23 +-
>  gcc/doc/invoke.texi                           |  15 ++
>  gcc/testsuite/g++.dg/modules/depflags-f-MD.C  |   2 +
>  gcc/testsuite/g++.dg/modules/depflags-f.C     |   1 +
>  gcc/testsuite/g++.dg/modules/depflags-fi.C    |   3 +
>  gcc/testsuite/g++.dg/modules/depflags-fj-MD.C |   3 +
>  gcc/testsuite/g++.dg/modules/depflags-fj.C    |   4 +
>  .../g++.dg/modules/depflags-fjo-MD.C          |   4 +
>  gcc/testsuite/g++.dg/modules/depflags-fjo.C   |   5 +
>  gcc/testsuite/g++.dg/modules/depflags-fo-MD.C |   3 +
>  gcc/testsuite/g++.dg/modules/depflags-fo.C    |   4 +
>  gcc/testsuite/g++.dg/modules/depflags-j-MD.C  |   2 +
>  gcc/testsuite/g++.dg/modules/depflags-j.C     |   3 +
>  gcc/testsuite/g++.dg/modules/depflags-jo-MD.C |   3 +
>  gcc/testsuite/g++.dg/modules/depflags-jo.C    |   4 +
>  gcc/testsuite/g++.dg/modules/depflags-o-MD.C  |   2 +
>  gcc/testsuite/g++.dg/modules/depflags-o.C     |   3 +
>  gcc/testsuite/g++.dg/modules/modules.exp      |   1 +
>  gcc/testsuite/g++.dg/modules/p1689-1.C        |  18 ++
>  gcc/testsuite/g++.dg/modules/p1689-1.exp.json |  27 +++
>  gcc/testsuite/g++.dg/modules/p1689-2.C        |  16 ++
>  gcc/testsuite/g++.dg/modules/p1689-2.exp.json |  16 ++
>  gcc/testsuite/g++.dg/modules/p1689-3.C        |  14 ++
>  gcc/testsuite/g++.dg/modules/p1689-3.exp.json |  16 ++
>  gcc/testsuite/g++.dg/modules/p1689-4.C        |  14 ++
>  gcc/testsuite/g++.dg/modules/p1689-4.exp.json |  14 ++
>  gcc/testsuite/g++.dg/modules/p1689-5.C        |  14 ++
>  gcc/testsuite/g++.dg/modules/p1689-5.exp.json |  14 ++
>  gcc/testsuite/g++.dg/modules/test-p1689.py    | 222 ++++++++++++++++++
>  gcc/testsuite/lib/modules.exp                 |  71 ++++++
>  libcpp/charset.cc                             |  28 ++-
>  libcpp/include/cpplib.h                       |  12 +-
>  libcpp/include/mkdeps.h                       |  17 +-
>  libcpp/init.cc                                |  13 +-
>  libcpp/internal.h                             |   2 +
>  libcpp/mkdeps.cc                              | 149 +++++++++++-
>  40 files changed, 789 insertions(+), 30 deletions(-)
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-f-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-f.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fi.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fj-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fj.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fjo-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fjo.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fo-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-fo.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-j-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-j.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-jo-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-jo.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-o-MD.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/depflags-o.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-1.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-1.exp.json
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-2.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-2.exp.json
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-3.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-3.exp.json
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-4.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-4.exp.json
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-5.C
>  create mode 100644 gcc/testsuite/g++.dg/modules/p1689-5.exp.json
>  create mode 100644 gcc/testsuite/g++.dg/modules/test-p1689.py
>  create mode 100644 gcc/testsuite/lib/modules.exp
>
>
> base-commit: 9d4c00cdaccc3decd07740e817387ce844ef3ac9
> --
> 2.39.0
>

  parent reply	other threads:[~2023-02-03  4:07 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-25 21:06 Ben Boeckel
2023-01-25 21:06 ` [PATCH v5 1/5] libcpp: reject codepoints above 0x10FFFF Ben Boeckel
2023-02-13 15:53   ` Jason Merrill
2023-05-12 14:26     ` Ben Boeckel
2023-01-25 21:06 ` [PATCH v5 2/5] libcpp: add a function to determine UTF-8 validity of a C string Ben Boeckel
2023-10-23 15:16   ` David Malcolm
2023-10-23 15:24     ` Jason Merrill
2023-10-23 15:28       ` David Malcolm
2023-01-25 21:06 ` [PATCH v5 3/5] p1689r5: initial support Ben Boeckel
2023-02-14 21:50   ` Jason Merrill
2023-05-12 14:24     ` Ben Boeckel
2023-06-19 21:33       ` Jason Merrill
2023-06-20 16:51         ` Ben Boeckel
2023-06-20 19:46     ` Ben Boeckel
2023-06-23 18:31       ` Jason Merrill
2023-06-25 17:08         ` Ben Boeckel
2023-01-25 21:06 ` [PATCH v5 4/5] c++modules: report imported CMI files as dependencies Ben Boeckel
2023-02-13 18:33   ` Jason Merrill
2023-05-12 14:26     ` Ben Boeckel
2023-06-22 21:21   ` Jason Merrill
2023-06-23  2:45     ` Ben Boeckel
2023-06-23 12:12       ` Nathan Sidwell
2023-06-25 16:36         ` Ben Boeckel
2023-07-18 20:52           ` Jason Merrill
2023-07-18 21:12             ` Nathan Sidwell
2023-07-19  0:01             ` Ben Boeckel
2023-07-19 21:11               ` Nathan Sidwell
2023-07-20  0:47                 ` Ben Boeckel
2023-07-20 21:00                   ` Nathan Sidwell
2023-07-21 14:57                     ` Ben Boeckel
2023-07-21 20:23                       ` Nathan Sidwell
2023-07-24  0:26                         ` Ben Boeckel
2023-07-28  1:13                           ` Jason Merrill
2023-07-29 14:25                             ` Ben Boeckel
2023-01-25 21:06 ` [PATCH v5 5/5] c++modules: report module mapper files as a dependency Ben Boeckel
2023-06-23 14:44   ` Jason Merrill
2023-06-25 16:42     ` Ben Boeckel
2023-02-02 14:04 ` [PATCH v5 0/5] P1689R5 support Ben Boeckel
2023-02-02 20:24 ` Harald Anlauf
2023-02-03  4:00   ` Ben Boeckel
2023-02-03  4:07 ` Andrew Pinski [this message]
2023-02-03  8:58   ` Jonathan Wakely
2023-02-03  9:10     ` Jonathan Wakely
2023-02-03 14:52       ` Ben Boeckel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+=Sn1nordTO+5hjiLO=6D8f2DSWqx+xMKF1oNNpKwgNrXhp+Q@mail.gmail.com' \
    --to=pinskia@gmail.com \
    --cc=ben.boeckel@kitware.com \
    --cc=brad.king@kitware.com \
    --cc=fortran@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=gcc@gcc.gnu.org \
    --cc=jason@redhat.com \
    --cc=nathan@acm.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).