From e0573431410eff8653d4b462e276613ab416744c Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 16 Feb 2018 09:05:35 +0000 Subject: PR bootstrap/84405 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3. * vec.h (vec_default_construct): Use memset instead of placement new if BROKEN_VALUE_INITIALIZATION is defined. * hash-table.h (hash_table::empty_slow): Use memset instead of value initialization if BROKEN_VALUE_INITIALIZATION is defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257726 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/system.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/system.h') diff --git a/gcc/system.h b/gcc/system.h index 5d9aaae76ec..4abc321c71d 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -824,6 +824,12 @@ extern void fancy_abort (const char *, int, const char *) /* Some compilers do not allow the use of unsigned char in bitfields. */ #define BOOL_BITFIELD unsigned int +/* GCC older than 4.4 have broken C++ value initialization handling, see + PR11309, PR30111, PR33916, PR82939 and PR84405 for more details. */ +#if GCC_VERSION > 0 && GCC_VERSION < 4004 && !defined(__clang__) +# define BROKEN_VALUE_INITIALIZATION +#endif + /* As the last action in this file, we poison the identifiers that shouldn't be used. Note, luckily gcc-3.0's token-based integrated preprocessor won't trip on poisoned identifiers that arrive from -- cgit v1.2.1