[PATCH] D123009: [Sema] Enum conversion warning when one signed and other unsigned.

Micah Weston via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 3 12:27:39 PDT 2022


red1bluelost added inline comments.


================
Comment at: clang/docs/ReleaseNotes.rst:113-114
   by unary operators.
+- ``-Wenum-conversion`` now warns on conversion of signed enum to unsigned enum
+  and unsigned enum to signed enum rather than ``-Wsign-conversion``.
 
----------------
aaron.ballman wrote:
> Minor tweak
Thanks!


================
Comment at: clang/test/Sema/enum-sign-conversion.c:6-8
+enum X { A,
+         B,
+         C };
----------------
aaron.ballman wrote:
> Unrelated formatting change?
Changed back.


================
Comment at: clang/test/Sema/enum-sign-conversion.c:14-18
+enum SE1 { N1 = -1 };
+enum SE2 { N2 = -2 };
+// Unsigned unums
+enum UE1 { P1 };
+enum UE2 { P2 };
----------------
aaron.ballman wrote:
> The second variants are unused.
Good catch, removed.


================
Comment at: clang/test/Sema/enum-sign-conversion.c:37-43
+unsigned f5(enum UE1 E) {
+  return E; // signed-warning {{implicit conversion changes signedness: 'enum UE1' to 'unsigned int'}}
+}
+
+enum UE1 f6(unsigned E) {
+  return E; // signed-warning {{implicit conversion changes signedness: 'unsigned int' to 'enum UE1'}}
+}
----------------
aaron.ballman wrote:
> Shouldn't these not warn as well -- the underlying enum type is unsigned?
This is the case with 'win32' for the ABI. It has enum be signed as default. I changed the name of the verify to win32 to that it is easier to see that is the case.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123009/new/

https://reviews.llvm.org/D123009



More information about the cfe-commits mailing list