public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-741] libiberty: remove FINAL and OVERRIDE from ansidecl.h
@ 2022-05-24 14:29 David Malcolm
  0 siblings, 0 replies; only message in thread
From: David Malcolm @ 2022-05-24 14:29 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:2c5c64566329181b0a234ae9015491c7a727f323

commit r13-741-g2c5c64566329181b0a234ae9015491c7a727f323
Author: David Malcolm <dmalcolm@redhat.com>
Date:   Tue May 24 10:22:37 2022 -0400

    libiberty: remove FINAL and OVERRIDE from ansidecl.h
    
    libiberty's ansidecl.h provides macros FINAL and OVERRIDE to allow
    virtual functions to be labelled with the C++11 "final" and "override"
    specifiers, but with empty implementations on pre-C++11 C++ compilers.
    
    We've used the macros in many places in GCC, but as of as of GCC 11
    onwards GCC has required a C++11 compiler, such as GCC 4.8 or later.
    On the assumption that any such compiler correctly implements "final"
    and "override", I've simplified GCC's codebase by replacing all uses of
    the FINAL and OVERRIDE macros in GCC's source tree with the lower-case
    specifiers (via commits r13-690-gff171cb13df671 and
    r13-716-g8473ef7be60443)
    
    The macros are reportedly not used anywhere in binutils-gdb.
    
    This patch completes this transition for GCC by eliminating the macros
    from ansidecl.h.
    
    include/ChangeLog:
            * ansidecl.h: Drop macros OVERRIDE and FINAL.
    
    Signed-off-by: David Malcolm <dmalcolm@redhat.com>

Diff:
---
 include/ansidecl.h | 41 -----------------------------------------
 1 file changed, 41 deletions(-)

diff --git a/include/ansidecl.h b/include/ansidecl.h
index 46fe3ffabd9..056a03ebb6e 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -321,47 +321,6 @@ So instead we use the macro below and test it against specific values.  */
 #define CONSTEXPR
 #endif
 
-/* C++11 adds the ability to add "override" after an implementation of a
-   virtual function in a subclass, to:
-     (A) document that this is an override of a virtual function
-     (B) allow the compiler to issue a warning if it isn't (e.g. a mismatch
-         of the type signature).
-
-   Similarly, it allows us to add a "final" to indicate that no subclass
-   may subsequently override the vfunc.
-
-   Provide OVERRIDE and FINAL as macros, allowing us to get these benefits
-   when compiling with C++11 support, but without requiring C++11.
-
-   For gcc, use "-std=c++11" to enable C++11 support; gcc 6 onwards enables
-   this by default (actually GNU++14).  */
-
-#if defined __cplusplus
-# if __cplusplus >= 201103
-   /* C++11 claims to be available: use it.  Final/override were only
-      implemented in 4.7, though.  */
-#  if GCC_VERSION < 4007
-#   define OVERRIDE
-#   define FINAL
-#  else
-#   define OVERRIDE override
-#   define FINAL final
-#  endif
-# elif GCC_VERSION >= 4007
-   /* G++ 4.7 supports __final in C++98.  */
-#  define OVERRIDE
-#  define FINAL __final
-# else
-   /* No C++11 support; leave the macros empty.  */
-#  define OVERRIDE
-#  define FINAL
-# endif
-#else
-  /* No C++11 support; leave the macros empty.  */
-# define OVERRIDE
-# define FINAL
-#endif
-
 /* A macro to disable the copy constructor and assignment operator.
    When building with C++11 and above, the methods are explicitly
    deleted, causing a compile-time error if something tries to copy.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-05-24 14:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-24 14:29 [gcc r13-741] libiberty: remove FINAL and OVERRIDE from ansidecl.h David Malcolm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).