[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