diff options
author | Abseil Team <absl-team@google.com> | 2020-11-05 10:55:22 -0800 |
---|---|---|
committer | Andy Getz <durandal@google.com> | 2020-11-05 14:17:56 -0500 |
commit | e96d49687d9c078f2d47356b6723c3b5715493f7 (patch) | |
tree | cc884fdd720693ff90ae7ebe1ab0ef06f663c521 /absl/base/macros.h | |
parent | 731852f10b737c5a5c3be93777a2c17b24b4c5a6 (diff) |
Export of internal Abseil changes
--
76c5eb1cf346a1a64e0a5e2edf032546d600075a by Andy Getzendanner <durandal@google.com>:
Fix stacktrace on aarch64 architecture. Fixes #805
Import of https://github.com/abseil/abseil-cpp/pull/827
PiperOrigin-RevId: 340886173
--
28f48f7bcadd4681854cddb0a7736d26d7dab000 by Andy Getzendanner <durandal@google.com>:
Some attribute cleanups in and around statusor:
* mark statusor_internal::Helper::Crash ABSL_ATTRIBUTE_NORETURN
* add ABSL_INTERNAL_UNREACHABLE to ABSL_INTERNAL_LOG when severity is FATAL
* create ABSL_INTERNAL_UNREACHABLE to wrap __builtin_unreachable and __assume(0)
* use ABSL_ATTRIBUTE_NONNULL instead of __builtin_unreachable in statusor_internal::PlacementNew (https://godbolt.org/z/n691fa)
PiperOrigin-RevId: 340868438
--
33905d1d2d01eb6f81b04abaf24170bfebb6df09 by Andy Getzendanner <durandal@google.com>:
moved deleted functions to public for better compiler errors.
Import of https://github.com/abseil/abseil-cpp/pull/828
PiperOrigin-RevId: 340863976
--
5e502222dfc3f5a0ef146535a9e16c743b005092 by Jorg Brown <jorg@google.com>:
ConvertibleToStringView wastes a lot of cycles initializing members just to reset them immediately after. Only initialize the string storage when needed. This makes StrSplit() 0-30% faster depending on the use case.
PiperOrigin-RevId: 340732039
GitOrigin-RevId: 76c5eb1cf346a1a64e0a5e2edf032546d600075a
Change-Id: I2ba1f717c4eaad384cd0a22694fd05f9e6a2d8fa
Diffstat (limited to 'absl/base/macros.h')
-rw-r--r-- | absl/base/macros.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/absl/base/macros.h b/absl/base/macros.h index 02dd9ff4..3e085a91 100644 --- a/absl/base/macros.h +++ b/absl/base/macros.h @@ -144,4 +144,15 @@ ABSL_NAMESPACE_END #define ABSL_INTERNAL_RETHROW do {} while (false) #endif // ABSL_HAVE_EXCEPTIONS +// `ABSL_INTERNAL_UNREACHABLE` is an unreachable statement. A program which +// reaches one has undefined behavior, and the compiler may optimize +// accordingly. +#if defined(__GNUC__) || ABSL_HAVE_BUILTIN(__builtin_unreachable) +#define ABSL_INTERNAL_UNREACHABLE __builtin_unreachable() +#elif defined(_MSC_VER) +#define ABSL_INTERNAL_UNREACHABLE __assume(0) +#else +#define ABSL_INTERNAL_UNREACHABLE +#endif + #endif // ABSL_BASE_MACROS_H_ |