[PATCH] D132330: [ADT] Simplify llvm::bit_cast (NFC)
Kazu Hirata via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 21 10:25:37 PDT 2022
kazu updated this revision to Diff 454327.
kazu added a comment.
Remove #include "llvm/Support/Compiler.h"
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132330/new/
https://reviews.llvm.org/D132330
Files:
llvm/include/llvm/ADT/bit.h
Index: llvm/include/llvm/ADT/bit.h
===================================================================
--- llvm/include/llvm/ADT/bit.h
+++ llvm/include/llvm/ADT/bit.h
@@ -14,7 +14,6 @@
#ifndef LLVM_ADT_BIT_H
#define LLVM_ADT_BIT_H
-#include "llvm/Support/Compiler.h"
#include <cstring>
#include <type_traits>
@@ -25,34 +24,10 @@
// - It requires trivially-constructible To, to avoid UB in the implementation.
template <
typename To, typename From,
- typename = std::enable_if_t<sizeof(To) == sizeof(From)>
-#if (__has_feature(is_trivially_constructible) && defined(_LIBCPP_VERSION)) || \
- (defined(__GNUC__) && __GNUC__ >= 5)
- ,
- typename = std::enable_if_t<std::is_trivially_constructible<To>::value>
-#elif __has_feature(is_trivially_constructible)
- ,
- typename = std::enable_if_t<__is_trivially_constructible(To)>
-#else
- // See comment below.
-#endif
-#if (__has_feature(is_trivially_copyable) && defined(_LIBCPP_VERSION)) || \
- (defined(__GNUC__) && __GNUC__ >= 5)
- ,
+ typename = std::enable_if_t<sizeof(To) == sizeof(From)>,
+ typename = std::enable_if_t<std::is_trivially_constructible<To>::value>,
typename = std::enable_if_t<std::is_trivially_copyable<To>::value>,
- typename = std::enable_if_t<std::is_trivially_copyable<From>::value>
-#elif __has_feature(is_trivially_copyable)
- ,
- typename = std::enable_if_t<__is_trivially_copyable(To)>,
- typename = std::enable_if_t<__is_trivially_copyable(From)>
-#else
-// This case is GCC 4.x. clang with libc++ or libstdc++ never get here. Unlike
-// llvm/Support/type_traits.h's is_trivially_copyable we don't want to
-// provide a good-enough answer here: developers in that configuration will hit
-// compilation failures on the bots instead of locally. That's acceptable
-// because it's very few developers, and only until we move past C++11.
-#endif
- >
+ typename = std::enable_if_t<std::is_trivially_copyable<From>::value>>
inline To bit_cast(const From &from) noexcept {
To to;
std::memcpy(&to, &from, sizeof(To));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D132330.454327.patch
Type: text/x-patch
Size: 2064 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220821/aeea9573/attachment.bin>
More information about the llvm-commits
mailing list