Make dereferencing a void* a hard-error instead of warn-as-error
authorErich Keane <erich.keane@intel.com>
Thu, 18 May 2023 15:26:25 +0000 (08:26 -0700)
committerErich Keane <erich.keane@intel.com>
Wed, 24 May 2023 18:27:13 +0000 (11:27 -0700)
commitfca4e2add0f8b0471e4dbae5cf647006ec360bb2
tree67e5fca90bc3a4e637ff0912229332e20039c7b3
parent2daf91dae3bc25d2ffb869d9781d9f4496a27d02
Make dereferencing a void* a hard-error instead of warn-as-error

Clang 16 changed to consider dereferencing a void* to be a
warning-as-error, plus made this an error in SFINAE contexts, since this
resulted in incorrect template instantiation.  When doing so, the Clang
16 documentation was updated to reflect that this was likely to change
again to a non-disablable error in the next version.

As there has been no response to changing from a warning to an error, I
believe this is a non-controversial change.

This patch changes this to be an Error, consistent with the standard and
other compilers.

This was discussed in this RFC:
https://discourse.llvm.org/t/rfc-can-we-stop-the-extension-to-allow-dereferencing-void-in-c/65708

Differential Revision: https://reviews.llvm.org/D150875
clang/docs/ReleaseNotes.rst
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/Sema/SemaExpr.cpp
clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1inst.cpp
clang/test/SemaCXX/decl-expr-ambiguity.cpp
clang/test/SemaCXX/disallow_void_deref.cpp
clang/test/SemaCXX/reinterpret-cast.cpp