Fix or suppress GCC warnings during build.
authorEric Fiselier <eric@efcs.ca>
Mon, 29 Aug 2016 20:43:38 +0000 (20:43 +0000)
committerEric Fiselier <eric@efcs.ca>
Mon, 29 Aug 2016 20:43:38 +0000 (20:43 +0000)
commitf6ac565031343554370a6a3139f88341765fa32d
treef8c7be8756bd1ca87b4e9e5a040a550b80984c7e
parent43e5fe3fac5f5925063acd29fc023ca287337eb4
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
libcxx/CMakeLists.txt
libcxx/include/__config
libcxx/include/__tuple
libcxx/include/cstdlib
libcxx/include/typeinfo
libcxx/src/strstream.cpp