diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2020-09-02 18:51:28 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2020-09-02 18:51:28 +0100 |
commit | f049cda373d29ea1bce4065b24cbb392cdc5b172 (patch) | |
tree | fd49955b9ee707ee627bca078253f463ab640d9c | |
parent | ce90d203cea33a4bfd4e415f601fe4486ecbb45d (diff) |
c++: Stop defining true, false and bool as macros in <stdbool.h>
Since r216679 these macros have only been defined in C++98 mode, rather
than all modes. That is permitted as a GNU extension because that header
doesn't exist in the C++ standard until C++11, so we can make it do
whatever we want for C++98. But as discussed in the PR c++/60304
comments, these macros shouldn't ever be defined for C++.
This patch removes the macro definitions for C++98 too.
The new test already passed for C++98 (and the conversion is ill-formed
in C++11 and later) so this new test is arguably unnecessary.
gcc/ChangeLog:
PR c++/60304
* ginclude/stdbool.h (bool, false, true): Never define for C++.
gcc/testsuite/ChangeLog:
PR c++/60304
* g++.dg/warn/Wconversion-null-5.C: New test.
-rw-r--r-- | gcc/ginclude/stdbool.h | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wconversion-null-5.C | 6 |
2 files changed, 6 insertions, 7 deletions
diff --git a/gcc/ginclude/stdbool.h b/gcc/ginclude/stdbool.h index 72be438692f..1b56498d96f 100644 --- a/gcc/ginclude/stdbool.h +++ b/gcc/ginclude/stdbool.h @@ -39,13 +39,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* Supporting _Bool in C++ is a GCC extension. */ #define _Bool bool -#if __cplusplus < 201103L -/* Defining these macros in C++98 is a GCC extension. */ -#define bool bool -#define false false -#define true true -#endif - #endif /* __cplusplus */ /* Signal that all the definitions are present. */ diff --git a/gcc/testsuite/g++.dg/warn/Wconversion-null-5.C b/gcc/testsuite/g++.dg/warn/Wconversion-null-5.C new file mode 100644 index 00000000000..05980ea91ab --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wconversion-null-5.C @@ -0,0 +1,6 @@ +// PR c++/60304 +// { dg-do compile { target c++98_only } } +// { dg-options "-Wconversion-null" } + +#include <stdbool.h> +int * foo() {return false;} // { dg-warning "converting 'false' to pointer" } |