Author: cor3ntin
Date: 2024-12-07T04:22:47+01:00
New Revision: bcf6f84763ea01d0a22022d0d64442e774fe86ab

URL: 
https://github.com/llvm/llvm-project/commit/bcf6f84763ea01d0a22022d0d64442e774fe86ab
DIFF: 
https://github.com/llvm/llvm-project/commit/bcf6f84763ea01d0a22022d0d64442e774fe86ab.diff

LOG: Revert "[Clang] Deleting an incomplete enum type is not an error (#118455) 
(#118980)

This reverts commit 8271195de05742ed7079d7882fbebc2daecbd7e2.

Added: 
    

Modified: 
    clang/docs/ReleaseNotes.rst
    clang/lib/Sema/SemaExprCXX.cpp
    clang/test/SemaCXX/new-delete.cpp

Removed: 
    


################################################################################
diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 3f58e64cf0ccbc..59e3a6609123d2 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -796,7 +796,6 @@ Bug Fixes to C++ Support
 - Fixed an assertion failure caused by mangled names with invalid identifiers. 
(#GH112205)
 - Fixed an incorrect lambda scope of generic lambdas that caused Clang to 
crash when computing potential lambda
   captures at the end of a full expression. (#GH115931)
-- Clang no longer rejects deleting a pointer of incomplete enumeration type. 
(#GH99278)
 
 Bug Fixes to AST Handling
 ^^^^^^^^^^^^^^^^^^^^^^^^^

diff  --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index db9ea7fb66e05a..f58c0fa21e8380 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -3747,8 +3747,7 @@ Sema::ActOnCXXDelete(SourceLocation StartLoc, bool 
UseGlobal,
     } else if (!Pointee->isDependentType()) {
       // FIXME: This can result in errors if the definition was imported from a
       // module but is hidden.
-      if (!Pointee->isStructureOrClassType() ||
-          !RequireCompleteType(StartLoc, Pointee,
+      if (!RequireCompleteType(StartLoc, Pointee,
                                LangOpts.CPlusPlus26
                                    ? diag::err_delete_incomplete
                                    : diag::warn_delete_incomplete,

diff  --git a/clang/test/SemaCXX/new-delete.cpp 
b/clang/test/SemaCXX/new-delete.cpp
index 98b168d9df1f37..595bdc689d694b 100644
--- a/clang/test/SemaCXX/new-delete.cpp
+++ b/clang/test/SemaCXX/new-delete.cpp
@@ -540,13 +540,6 @@ namespace PR10504 {
   void f(A *x) { delete x; } // expected-warning {{delete called on 
'PR10504::A' that is abstract but has non-virtual destructor}}
 }
 
-#if __cplusplus >= 201103L
-enum GH99278_1 {
-    zero = decltype(delete static_cast<GH99278_1*>(nullptr), 0){}
-    // expected-warning@-1 {{expression with side effects has no effect in an 
unevaluated context}}
-};
-#endif
-
 struct PlacementArg {};
 inline void *operator new[](size_t, const PlacementArg &) throw () {
   return 0;


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to