summaryrefslogtreecommitdiffstats
path: root/libcxx/include/cstdlib
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-08-29 20:43:38 +0000
committerEric Fiselier <eric@efcs.ca>2016-08-29 20:43:38 +0000
commitf6ac565031343554370a6a3139f88341765fa32d (patch)
treef8c7be8756bd1ca87b4e9e5a040a550b80984c7e /libcxx/include/cstdlib
parent43e5fe3fac5f5925063acd29fc023ca287337eb4 (diff)
downloadbcm5719-llvm-f6ac565031343554370a6a3139f88341765fa32d.tar.gz
bcm5719-llvm-f6ac565031343554370a6a3139f88341765fa32d.zip
Fix or suppress GCC warnings during build.
Summary: Currently a number of GCC warnings are emitted when building libc++. This patch fixes or ignores all of them. The primary changes are: * Work around strict aliasing issues in `typeinfo::hash_code()` by using __attribute__((may_alias)). However I think a non-aliasing `hash_code()` implementation is possible. Further investigation needed. * Add `_LIBCPP_UNREACHABLE()` to switch in `strstream.cpp` to avoid -Wpotentially-uninitialized. * Fix -Wunused-value warning in `__all` by adding a void cast. * Ignore -Wattributes for now. There are a number of real attribute issues when using GCC but enabling the warning is too noisy. * Ignore -Wliteral-suffix since it warns about the use of reserved identifiers. Note Only GCC 7.0 supports disabling this warning. * Ignore -Wc++14-compat since it warns about the sized new/delete overloads. Reviewers: EricWF Differential Revision: https://reviews.llvm.org/D24003 llvm-svn: 280007
Diffstat (limited to 'libcxx/include/cstdlib')
-rw-r--r--libcxx/include/cstdlib6
1 files changed, 6 insertions, 0 deletions
diff --git a/libcxx/include/cstdlib b/libcxx/include/cstdlib
index 10ed231078d..9a775b84484 100644
--- a/libcxx/include/cstdlib
+++ b/libcxx/include/cstdlib
@@ -89,6 +89,12 @@ void *aligned_alloc(size_t alignment, size_t size); // C11
#pragma GCC system_header
#endif
+#ifdef __GNUC__
+#define _LIBCPP_UNREACHABLE() __builtin_unreachable()
+#else
+#define _LIBCPP_UNREACHABLE() _VSTD::abort()
+#endif
+
_LIBCPP_BEGIN_NAMESPACE_STD
using ::size_t;
OpenPOWER on IntegriCloud