aboutsummaryrefslogtreecommitdiff
path: root/gcc/system.h
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-02-16 10:05:35 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-02-16 10:05:35 +0100
commitab67039ccd31de6d0192d4560ff971ff0af81726 (patch)
tree0263d95f48f4201cf663f022f24d2e4e85fd6d6d /gcc/system.h
parent33006d53fd3adf2baae85b625e3ec99908b7a31c (diff)
downloadgcc-ab67039ccd31de6d0192d4560ff971ff0af81726.zip
gcc-ab67039ccd31de6d0192d4560ff971ff0af81726.tar.gz
gcc-ab67039ccd31de6d0192d4560ff971ff0af81726.tar.bz2
re PR bootstrap/84405 (Fails to bootstrap with GCC 4.1.2, GCC 4.2.4)
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<Descriptor, Allocator>::empty_slow): Use memset instead of value initialization if BROKEN_VALUE_INITIALIZATION is defined. From-SVN: r257726
Diffstat (limited to 'gcc/system.h')
-rw-r--r--gcc/system.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/system.h b/gcc/system.h
index 5d9aaae..4abc321 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