On Mon, Nov 20, 2023 at 10:56:09AM +0100, Florian Weimer wrote:
> gcc/
> 
>       * doc/invoke.texi (Warning Options): Document changes.

Let's be more specific here.
 
> gcc/c/
> 
>       PR c/96284
>       PR c/106416
>       * c-typeck.cc (build_conditional_expr): Use permerror_opt for
>       pointer/integer type mismatches, based on -Wint-conversion.
>       (pedwarn_permerror_init, permerror_init): New function.
>       (pedwarn_init): Call pedwarn_permerror_init.
>       (convert_for_assignment): Use permerror_opt and
>       permerror_init for -Wint-conversion     warnings.

A few extra whitespaces.
 
> gcc/testsuite/
> 
>       * gcc.dg/permerror-default.c (int_conversion_1)
>       (int_conversion_2): Expect the new permerrors.
>       * gcc.dg/permerror-gnu89-nopermissive.c (int_conversion_1)
>       (int_conversion_2): Likewise.
>       * gcc.dg/permerror-system.c: Likewise.
>       * c-c++-common/pr77624-1.c (foo, bar): Expect
>       error instead of warning.
>       * gcc.dg/Wint-conversion-2.c: Compile with -fpermissive due
>       to expected int-conversion warning.
>       * gcc.dg/Wint-conversion-3.c: Likewise.
>       * gcc.dg/Wint-conversion-4.c: New test.  Based on
>       gcc.dg/Wint-conversion-3.c.  Expect int-conversion errors.
>       * gcc.dg/assign-warn-1.c: Compile with -fpermissive.
>       * gcc.dg/assign-warn-4.c: New file.  Extracted from
>       assign-warn1.c.  Expect int-cnversion errors.

"int-conversion" (sorry about pointing out typos...)

>       * gcc.dg/diagnostic-types-1.c: compile with -fpermissive.

s/compile/Compile/

>       * gcc.dg/diagnostic-types-2.c: New file.  Extracted from
>       gcc.dg/diagnostic-types-1.c.  Expect some errors instead of
>       warnings.
>       * gcc.dg/gomp/pr35738.c: Compile with -fpermissive due to
>       expected int-conversion error.
>       * gcc.dg/gomp/pr35738-2.c: New test.  Based on
>       gcc.dg/gomp/pr35738.c.  Expect int-converison errors.
>       * gcc.dg/init-excess-3.c: Expect int-converison errors.
>       * gcc.dg/overflow-warn-1.c: Likewise.
>       * gcc.dg/overflow-warn-3.c: Likewise.
>       * gcc.dg/param-type-mismatch.c: Compile with -fpermissive.
>       * gcc.dg/param-type-mismatch-2.c: New test.  Copied from
>       gcc.dg/param-type-mismatch.c.  Expect errors.
>       * gcc.dg/pr61162-2.c: Compile with -fpermissive.
>       * gcc.dg/pr61162-3.c: New test. Extracted from
>       gcc.dg/pr61162-2.c.  Expect int-conversion errors.
>       * gcc.dg/spec-barrier-3.c: Use -fpermissive due to expected
>       int-conversion error.
>       * gcc.dg/spec-barrier-3a.c: New test.  Based on
>       gcc.dg/spec-barrier-3.c.  Expect int-conversion errors.
>       * gcc.target/aarch64/acle/memtag_2.c: Use -fpermissive due to expected
>       int-conversion error.
>       * gcc.target/aarch64/acle/memtag_2a.c: New test.  Copied from
>       gcc.target/aarch64/acle/memtag_2.c.  Expect error.
>       * gcc.target/aarch64/sve/acle/general-c/load_3.c (f1): Expect
>       error.
>       * gcc.target/aarch64/sve/acle/general-c/store_2.c (f1): Likewise.
>       * gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c
>       (f1): Likewise.
>       * 
> gcc.target/aarch64/sve/acle/general-c/store_scatter_index_restricted_1.c
>       (f1): Likewise.
>       * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c
>       (f1): Likewise.
>       * 
> gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c
>       (f1): Likewise.
> ---
>  gcc/c/c-typeck.cc                             |  97 +++++----
>  gcc/doc/invoke.texi                           |   6 +
>  gcc/testsuite/c-c++-common/pr77624-1.c        |   4 +-
>  gcc/testsuite/gcc.dg/Wint-conversion-2.c      |   2 +-
>  gcc/testsuite/gcc.dg/Wint-conversion-3.c      |   2 +-
>  gcc/testsuite/gcc.dg/Wint-conversion-4.c      |  14 ++
>  gcc/testsuite/gcc.dg/assign-warn-1.c          |   2 +-
>  gcc/testsuite/gcc.dg/assign-warn-4.c          |  21 ++
>  gcc/testsuite/gcc.dg/diagnostic-types-1.c     |   2 +-
>  gcc/testsuite/gcc.dg/diagnostic-types-2.c     |  24 +++
>  gcc/testsuite/gcc.dg/gomp/pr35738-2.c         |  18 ++
>  gcc/testsuite/gcc.dg/gomp/pr35738.c           |   2 +-
>  gcc/testsuite/gcc.dg/init-excess-3.c          |   4 +-
>  gcc/testsuite/gcc.dg/overflow-warn-1.c        |   4 +-
>  gcc/testsuite/gcc.dg/overflow-warn-3.c        |   4 +-
>  gcc/testsuite/gcc.dg/param-type-mismatch-2.c  | 187 ++++++++++++++++++
>  gcc/testsuite/gcc.dg/param-type-mismatch.c    |   2 +-
>  gcc/testsuite/gcc.dg/permerror-default.c      |  20 +-
>  .../gcc.dg/permerror-gnu89-nopermissive.c     |  20 +-
>  gcc/testsuite/gcc.dg/permerror-system.c       |  13 +-
>  gcc/testsuite/gcc.dg/pr61162-2.c              |   2 +-
>  gcc/testsuite/gcc.dg/pr61162-3.c              |  13 ++
>  gcc/testsuite/gcc.dg/spec-barrier-3.c         |   2 +-
>  gcc/testsuite/gcc.dg/spec-barrier-3a.c        |  13 ++
>  .../gcc.target/aarch64/acle/memtag_2.c        |   4 +-
>  .../gcc.target/aarch64/acle/memtag_2a.c       |  71 +++++++
>  .../aarch64/sve/acle/general-c/load_3.c       |   2 +-
>  .../aarch64/sve/acle/general-c/store_2.c      |   2 +-
>  .../acle/general-c/store_scatter_index_1.c    |   2 +-
>  .../store_scatter_index_restricted_1.c        |   2 +-
>  .../acle/general-c/store_scatter_offset_2.c   |   2 +-
>  .../store_scatter_offset_restricted_1.c       |   2 +-
>  32 files changed, 483 insertions(+), 82 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.dg/Wint-conversion-4.c
>  create mode 100644 gcc/testsuite/gcc.dg/assign-warn-4.c
>  create mode 100644 gcc/testsuite/gcc.dg/diagnostic-types-2.c
>  create mode 100644 gcc/testsuite/gcc.dg/gomp/pr35738-2.c
>  create mode 100644 gcc/testsuite/gcc.dg/param-type-mismatch-2.c
>  create mode 100644 gcc/testsuite/gcc.dg/pr61162-3.c
>  create mode 100644 gcc/testsuite/gcc.dg/spec-barrier-3a.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/memtag_2a.c
> 
> diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
> index 1dbb4471a88..c7b35a27e3f 100644
> --- a/gcc/c/c-typeck.cc
> +++ b/gcc/c/c-typeck.cc
> @@ -5450,8 +5450,9 @@ build_conditional_expr (location_t colon_loc, tree 
> ifexp, bool ifexp_bcp,
>          && (code2 == INTEGER_TYPE || code2 == BITINT_TYPE))
>      {
>        if (!null_pointer_constant_p (orig_op2))
> -     pedwarn (colon_loc, OPT_Wint_conversion,
> -              "pointer/integer type mismatch in conditional expression");
> +     permerror_opt (colon_loc, OPT_Wint_conversion,
> +                    "pointer/integer type mismatch "
> +                    "in conditional expression");
>        else
>       {
>         op2 = null_pointer_node;
> @@ -5462,8 +5463,9 @@ build_conditional_expr (location_t colon_loc, tree 
> ifexp, bool ifexp_bcp,
>          && (code1 == INTEGER_TYPE || code1 == BITINT_TYPE))
>      {
>        if (!null_pointer_constant_p (orig_op1))
> -     pedwarn (colon_loc, OPT_Wint_conversion,
> -              "pointer/integer type mismatch in conditional expression");
> +     permerror_opt (colon_loc, OPT_Wint_conversion,
> +                    "pointer/integer type mismatch "
> +                    "in conditional expression");
>        else
>       {
>         op1 = null_pointer_node;
> @@ -6559,28 +6561,48 @@ error_init (location_t loc, const char *gmsgid, ...)
>      inform (loc, "(near initialization for %qs)", ofwhat);
>  }
>  
> -/* Issue a pedantic warning for a bad initializer component.  OPT is
> -   the option OPT_* (from options.h) controlling this warning or 0 if
> -   it is unconditionally given.  GMSGID identifies the message.  The
> -   component name is taken from the spelling stack.  */
> +/* Used to implement pedwarn_init and permerror_init.  */
>  
>  static void ATTRIBUTE_GCC_DIAG (3,0)
> -pedwarn_init (location_t loc, int opt, const char *gmsgid, ...)
> +pedwarn_permerror_init (location_t loc, int opt, const char *gmsgid,
> +                     va_list *ap, diagnostic_t kind)

The declaration changed but the ATTRIBUTE_GCC_DIAG is still correct, ok.

The rest LGTM (though it's tricky to review every line in the testsuite/
changes.)

Marek

Reply via email to