]> granicus.if.org Git - llvm/commitdiff
Use llvm workaround for missing is_trivially_copyable.
authorZachary Turner <zturner@google.com>
Sat, 18 Feb 2017 01:46:01 +0000 (01:46 +0000)
committerZachary Turner <zturner@google.com>
Sat, 18 Feb 2017 01:46:01 +0000 (01:46 +0000)
some versions of GCC don't have this, so LLVM provides a
workaround.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295526 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo/MSF/StreamReader.h
include/llvm/DebugInfo/MSF/StreamWriter.h

index 01261226c2a2b9f4c488c1743496df85f598520c..719a26def087b21240626cc65871365cf03288e1 100644 (file)
 #include "llvm/DebugInfo/MSF/StreamRef.h"
 #include "llvm/Support/Endian.h"
 #include "llvm/Support/Error.h"
+#include "llvm/Support/type_traits.h"
 
 #include <string>
+#include <type_traits>
 
 namespace llvm {
 namespace msf {
@@ -63,7 +65,7 @@ public:
   }
 
   template <typename T> Error readObject(const T *&Dest) {
-    static_assert(std::is_trivially_copyable<T>::value,
+    static_assert(isPodLike<T>::value,
                   "Can only read trivially copyable object types!");
     ArrayRef<uint8_t> Buffer;
     if (auto EC = readBytes(Buffer, sizeof(T)))
@@ -74,7 +76,7 @@ public:
 
   template <typename T>
   Error readArray(ArrayRef<T> &Array, uint32_t NumElements) {
-    static_assert(std::is_trivially_copyable<T>::value,
+    static_assert(isPodLike<T>::value,
                   "Can only read trivially copyable object types!");
     ArrayRef<uint8_t> Bytes;
     if (NumElements == 0) {
@@ -102,7 +104,7 @@ public:
 
   template <typename T>
   Error readArray(FixedStreamArray<T> &Array, uint32_t NumItems) {
-    static_assert(std::is_trivially_copyable<T>::value,
+    static_assert(isPodLike<T>::value,
                   "Can only read trivially copyable object types!");
     if (NumItems == 0) {
       Array = FixedStreamArray<T>();
index 87af18f0206189a6cfcd87aeb861535a4da379ec..69bb5505efba480b53d2b7821a7d555407419b16 100644 (file)
@@ -17,6 +17,7 @@
 #include "llvm/DebugInfo/MSF/StreamRef.h"
 #include "llvm/Support/Endian.h"
 #include "llvm/Support/Error.h"
+#include "llvm/Support/type_traits.h"
 #include <cstdint>
 #include <type_traits>
 
@@ -61,14 +62,14 @@ public:
                   "writeObject should not be used with pointers, to write "
                   "the pointed-to value dereference the pointer before calling "
                   "writeObject");
-    static_assert(std::is_trivially_copyable<T>::value,
+    static_assert(isPodLike<T>::value,
                   "Can only serialize trivially copyable object types");
     return writeBytes(
         ArrayRef<uint8_t>(reinterpret_cast<const uint8_t *>(&Obj), sizeof(T)));
   }
 
   template <typename T> Error writeArray(ArrayRef<T> Array) {
-    static_assert(std::is_trivially_copyable<T>::value,
+    static_assert(isPodLike<T>::value,
                   "Can only serialize trivially copyable object types");
     if (Array.empty())
       return Error::success();
@@ -87,7 +88,7 @@ public:
   }
 
   template <typename T> Error writeArray(FixedStreamArray<T> Array) {
-    static_assert(std::is_trivially_copyable<T>::value,
+    static_assert(isPodLike<T>::value,
                   "Can only serialize trivially copyable object types");
     return writeStreamRef(Array.getUnderlyingStream());
   }