From: David Malcolm Date: Fri, 6 May 2016 17:02:01 +0000 (+0000) Subject: Add OVERRIDE and FINAL macros to coretypes.h X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a89f917b6714d53e3fb4ba6ae67f71e75d20b907;p=gcc.git Add OVERRIDE and FINAL macros to coretypes.h gcc/ChangeLog: * coretypes.h (OVERRIDE): New macro. (FINAL): New macro. From-SVN: r235981 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0870dfbe7e6..9b03ac34b15 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-05-06 David Malcolm + + * coretypes.h (OVERRIDE): New macro. + (FINAL): New macro. + 2016-05-06 Eric Botcazou * tree-ssa-coalesce.c (gimple_can_coalesce_p): In the optimized case, diff --git a/gcc/coretypes.h b/gcc/coretypes.h index 2932d73e261..b3a91a6d5c5 100644 --- a/gcc/coretypes.h +++ b/gcc/coretypes.h @@ -361,6 +361,31 @@ typedef void (*gt_pointer_operator) (void *, void *); typedef unsigned char uchar; #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 __cplusplus >= 201103 +/* C++11 claims to be available: use it: */ +#define OVERRIDE override +#define FINAL final +#else +/* No C++11 support; leave the macros empty: */ +#define OVERRIDE +#define FINAL +#endif + /* Most host source files will require the following headers. */ #if !defined (GENERATOR_FILE) && !defined (USED_FOR_TARGET) #include "machmode.h"