[all-commits] [llvm/llvm-project] f635bc: NFC: Pre-commit test: -Wpointer-sign with plain ch...

Hubert Tong via All-commits all-commits at lists.llvm.org
Mon Jan 11 15:45:33 PST 2021


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f635bcd16105a0a01eefa2c69a71cd103dedaddd
      https://github.com/llvm/llvm-project/commit/f635bcd16105a0a01eefa2c69a71cd103dedaddd
  Author: Hubert Tong <hubert.reinterpretcast at gmail.com>
  Date:   2021-01-11 (Mon, 11 Jan 2021)

  Changed paths:
    M clang/test/Sema/incompatible-sign.c
    A clang/test/Sema/incompatible-sign.cpp

  Log Message:
  -----------
  NFC: Pre-commit test: -Wpointer-sign with plain char to [un]signed char

Add tests with bad message text for `-Wpointer-sign` and run them with
both signed and unsigned versions of plain `char`.


  Commit: c6ffe4d76fbf6ae505c0abccaf29017414265e32
      https://github.com/llvm/llvm-project/commit/c6ffe4d76fbf6ae505c0abccaf29017414265e32
  Author: Hubert Tong <hubert.reinterpretcast at gmail.com>
  Date:   2021-01-11 (Mon, 11 Jan 2021)

  Changed paths:
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/lib/Sema/SemaExpr.cpp
    M clang/test/Sema/incompatible-sign.c
    M clang/test/Sema/incompatible-sign.cpp
    M clang/test/SemaObjC/objc-cf-audited-warning.m

  Log Message:
  -----------
  [clang] Fix message text for `-Wpointer-sign` to account for plain char

The `-Wpointer-sign` warning text is inappropriate for describing the
incompatible pointer conversion between plain `char` and explicitly
`signed`/`unsigned` `char` (whichever plain `char` has the same range
as) and vice versa.

Specifically, in part, it reads "converts between pointers to integer
types with different sign". This patch changes that portion to read
instead as "converts between pointers to integer types where one is of
the unique plain 'char' type and the other is not" when one of the types
is plain `char`.

C17 subclause 6.5.16.1 indicates that the conversions resulting in
`-Wpointer-sign` warnings in assignment-like contexts are constraint
violations. This means that strict conformance requires a diagnostic for
the case where the message text is wrong before this patch. The lack of
an even more specialized warning group is consistent with GCC.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D93999


Compare: https://github.com/llvm/llvm-project/compare/7470017f2472...c6ffe4d76fbf


More information about the All-commits mailing list