components/llvm/patches/003-solaris-LLVM-ADT.patch
author Stefan Teleman <stefan.teleman@oracle.com>
Thu, 28 Jul 2016 16:25:34 -0700
changeset 6512 92717ce71105
permissions -rw-r--r--
24326140 upgrade LLVM to 3.8.1 24326159 upgrade clang to 3.8.1 22902339 memory corruption caused by undefined behavior in LLVM IR Module 22777179 implement [ -mtune= -march= -mcpu= ] in clang SPARC 22778085 LLVM is using %icc when it should be using %xcc 22778089 the SPARCV9 IS implementation is incomplete 22778098 LLVM should emit proc identifiers in SPARC assembler (capabilities) 22778650 clang should support OpenMP because it can 22859423 llvm CodeGen on Intel emits a bogus .ctors section 22902355 clang CodeGen is affected by 22902339 23701635 clang produces amd64 opcodes, but calls 32-bit assembler by default 23593143 lli JIT bitcode parsing creates a main function with wrong argc/argv 21759660 clang packages should include the scan-view and scan-build utilities 23854357 clang should check for GNU ld 17867434 clang crashed in LEXER 24306550 clang crashes in llvm::Twine::toStringRef 24311726 clang's Perl and Python utilities should not use #!/usr/bin/env 24312028 llvm::Twine needs copy constructors and assignment operators 24312221 classes must be CopyConstructible, CopyAssignable, MoveConstructible ... 24314621 LLVM should build using the new CMake based build system 24314638 LLVM CommandLine subsystem is busted 24314687 static initialization of optimization passes doesn't work as intended 21870069 clang makes incorrect assumptions about anonymous namespace instantiation order 22643565 llvm's Google test harness needs some attention 24314745 clang should support PIE executables in Solaris
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6512
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     1
# 24312028 llvm::Twine needs copy constructors and assignment operators
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     2
# 3.9.X for upstream.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
--- include/llvm/ADT/DenseMap.h	2015-10-01 20:46:33.000000000 -0400
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
+++ include/llvm/ADT/DenseMap.h	2016-05-08 23:19:20.512430267 -0400
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
@@ -854,7 +854,8 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
       // First move the inline buckets into a temporary storage.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
       AlignedCharArrayUnion<BucketT[InlineBuckets]> TmpStorage;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
-      BucketT *TmpBegin = reinterpret_cast<BucketT *>(TmpStorage.buffer);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
+      BucketT *TmpBegin =
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
+        reinterpret_cast<BucketT*>(reinterpret_cast<void*>(TmpStorage.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
       BucketT *TmpEnd = TmpBegin;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
       // Loop over the buckets, moving non-empty, non-tombstones into the
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
@@ -938,7 +939,8 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
     // Note that this cast does not violate aliasing rules as we assert that
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
     // the memory's dynamic type is the small, inline bucket buffer, and the
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
     // 'storage.buffer' static type is 'char *'.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
-    return reinterpret_cast<const BucketT *>(storage.buffer);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
+    return reinterpret_cast<const BucketT*>(
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
+      reinterpret_cast<const void*>(storage.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
   BucketT *getInlineBuckets() {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
     return const_cast<BucketT *>(
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
@@ -947,8 +949,10 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
   const LargeRep *getLargeRep() const {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
     assert(!Small);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
     // Note, same rule about aliasing as with getInlineBuckets.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
-    return reinterpret_cast<const LargeRep *>(storage.buffer);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    30
+    return reinterpret_cast<const LargeRep*>(
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
+      reinterpret_cast<const void*>(storage.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
   LargeRep *getLargeRep() {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
     return const_cast<LargeRep *>(
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
       const_cast<const SmallDenseMap *>(this)->getLargeRep());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    37
--- include/llvm/ADT/Optional.h	2015-08-19 19:07:27.000000000 -0400
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    38
+++ include/llvm/ADT/Optional.h	2016-05-08 23:19:20.513430291 -0400
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
@@ -116,17 +116,39 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
     reset();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
-  const T* getPointer() const { assert(hasVal); return reinterpret_cast<const T*>(storage.buffer); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
-  T* getPointer() { assert(hasVal); return reinterpret_cast<T*>(storage.buffer); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
-  const T& getValue() const LLVM_LVALUE_FUNCTION { assert(hasVal); return *getPointer(); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
-  T& getValue() LLVM_LVALUE_FUNCTION { assert(hasVal); return *getPointer(); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    47
+  const T* getPointer() const {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    48
+    assert(hasVal);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    49
+    return reinterpret_cast<const T*>(storage.buffer);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    50
+  }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    51
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
+  T* getPointer() {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
+    assert(hasVal);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
+    return reinterpret_cast<T*>(storage.buffer);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    55
+  }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
+  const T& getValue() const LLVM_LVALUE_FUNCTION {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
+    assert(hasVal);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
+    return *getPointer();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
+  }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    61
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
+  T& getValue() LLVM_LVALUE_FUNCTION {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    63
+    assert(hasVal);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
+    return *getPointer();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    65
+  }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
   explicit operator bool() const { return hasVal; }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
   bool hasValue() const { return hasVal; }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
   const T* operator->() const { return getPointer(); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
   T* operator->() { return getPointer(); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    71
-  const T& operator*() const LLVM_LVALUE_FUNCTION { assert(hasVal); return *getPointer(); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
-  T& operator*() LLVM_LVALUE_FUNCTION { assert(hasVal); return *getPointer(); }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
+  const T& operator*() const LLVM_LVALUE_FUNCTION {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    74
+    assert(hasVal);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    75
+    return *getPointer();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    76
+  }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    77
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    78
+  T& operator*() LLVM_LVALUE_FUNCTION {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    79
+    assert(hasVal);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    80
+    return *getPointer();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    81
+  }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    82
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    83
   template <typename U>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    84
   LLVM_CONSTEXPR T getValueOr(U &&value) const LLVM_LVALUE_FUNCTION {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    85
--- include/llvm/ADT/Triple.h	2015-12-01 02:33:56.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    86
+++ include/llvm/ADT/Triple.h	2016-05-09 07:12:20.705509490 -0700
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    87
@@ -127,6 +127,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    88
     MipsTechnologies,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    89
     NVIDIA,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    90
     CSR,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    91
+    Sun,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    92
     Myriad,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    93
     LastVendorType = Myriad
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    94
   };
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    95
####
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    96
--- include/llvm/ADT/SmallVector.h	2015-09-10 02:46:47.000000000 -0700
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    97
+++ include/llvm/ADT/SmallVector.h	2016-05-28 15:24:24.738410753 -0700
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    98
@@ -19,6 +19,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    99
 #include "llvm/Support/Compiler.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   100
 #include "llvm/Support/MathExtras.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   101
 #include "llvm/Support/type_traits.h"
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   102
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   103
 #include <algorithm>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   104
 #include <cassert>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   105
 #include <cstddef>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   106
@@ -27,6 +28,9 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   107
 #include <initializer_list>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   108
 #include <iterator>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   109
 #include <memory>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   110
+#include <cstdio>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   111
+#include <type_traits>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   112
+#include <typeinfo>
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   113
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   114
 namespace llvm {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   115
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   116
@@ -251,11 +255,27 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   117
 void SmallVectorTemplateBase<T, isPodLike>::grow(size_t MinSize) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   118
   size_t CurCapacity = this->capacity();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   119
   size_t CurSize = this->size();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   120
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   121
   // Always grow, even from zero.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   122
   size_t NewCapacity = size_t(NextPowerOf2(CurCapacity+2));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   123
   if (NewCapacity < MinSize)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   124
     NewCapacity = MinSize;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   125
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   126
+  NewCapacity = llvm::RoundUpToAlignment(NewCapacity,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   127
+                                         llvm::alignOf<uint64_t>());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   128
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   129
+#if defined(HAVE_POSIX_MEMALIGN)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   130
+  T *NewElts;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   131
+  size_t Alignment =
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   132
+    std::max<size_t>(llvm::AlignOf<uint64_t>::Alignment,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   133
+                     llvm::AlignOf<T>::Alignment);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   134
+  size_t Size = NewCapacity * sizeof(T);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   135
+  int R = posix_memalign((void**) &NewElts, Alignment, Size);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   136
+  assert((R == 0) && "posix_memalign failed!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   137
+  (void) std::memset(NewElts, 0, Size);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   138
+#else
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   139
   T *NewElts = static_cast<T*>(malloc(NewCapacity*sizeof(T)));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   140
+#endif
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   141
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   142
   // Move the elements over.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   143
   this->uninitialized_move(this->begin(), this->end(), NewElts);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   144
@@ -410,10 +430,44 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   145
       this->grow(N);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   146
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   147
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   148
+  // This function is evil.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   149
+  // Be very careful here with move vs. copy semantics.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   150
   T LLVM_ATTRIBUTE_UNUSED_RESULT pop_back_val() {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   151
-    T Result = ::std::move(this->back());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   152
-    this->pop_back();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   153
-    return Result;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   154
+    if (std::is_move_constructible<T>::value &&
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   155
+        std::is_move_assignable<T>::value) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   156
+      T Result = std::move(this->back());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   157
+      this->pop_back();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   158
+      return Result;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   159
+    } else if (std::is_copy_constructible<T>::value &&
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   160
+               std::is_copy_assignable<T>::value) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   161
+      T Result = this->back();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   162
+      this->pop_back();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   163
+      return Result;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   164
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   165
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   166
+    // We can't use llvm::errs() because it has a circular
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   167
+    // dependency on llvm::SmallVector<T>.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   168
+    if (!std::is_copy_constructible<T>::value) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   169
+      std::fprintf(stderr,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   170
+                   "%s: Type %s is not copy-constructible!\n",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   171
+                   __PRETTY_FUNCTION__, typeid(T).name());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   172
+      abort();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   173
+    } else if (!std::is_copy_assignable<T>::value) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   174
+      std::fprintf(stderr,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   175
+                   "%s: Type %s is not copy-assignable!\n",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   176
+                   __PRETTY_FUNCTION__, typeid(T).name());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   177
+      abort();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   178
+    } else if (!std::is_move_constructible<T>::value) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   179
+      std::fprintf(stderr,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   180
+                   "%s: Type %s is not move-constructible!\n",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   181
+                   __PRETTY_FUNCTION__, typeid(T).name());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   182
+      abort();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   183
+    } else if (!std::is_move_assignable<T>::value) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   184
+      std::fprintf(stderr,
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   185
+                   "%s: Type %s is not move-assignable!\n",
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   186
+                   __PRETTY_FUNCTION__, typeid(T).name());
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   187
+      abort();
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   188
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   189
   }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   190
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   191
   void swap(SmallVectorImpl &RHS);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   192
###
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   193
--- include/llvm/ADT/Twine.h	2016-01-10 00:27:13.000000000 -0800
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   194
+++ include/llvm/ADT/Twine.h	2016-07-16 22:13:18.628217595 -0700
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   195
@@ -129,8 +129,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   196
       UHexKind
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   197
     };
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   198
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   199
-    union Child
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   200
-    {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   201
+    union Child {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   202
       const Twine *twine;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   203
       const char *cString;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   204
       const std::string *stdString;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   205
@@ -144,6 +143,7 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   206
       const unsigned long long *decULL;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   207
       const long long *decLL;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   208
       const uint64_t *uHex;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   209
+      uint64_t buffer[1];
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   210
     };
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   211
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   212
   private:
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   213
@@ -161,28 +161,32 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   214
   private:
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   215
     /// Construct a nullary twine; the kind must be NullKind or EmptyKind.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   216
     explicit Twine(NodeKind Kind)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   217
-      : LHSKind(Kind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   218
+      : LHS(), RHS(), LHSKind(Kind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   219
       assert(isNullary() && "Invalid kind!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   220
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   221
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   222
+      LHS.twine = 0L;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   223
+      RHS.twine = 0L;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   224
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   225
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   226
     /// Construct a binary twine.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   227
-    explicit Twine(const Twine &LHS, const Twine &RHS)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   228
-        : LHSKind(TwineKind), RHSKind(TwineKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   229
-      this->LHS.twine = &LHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   230
-      this->RHS.twine = &RHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   231
-      assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   232
+    explicit Twine(const Twine &TLHS, const Twine &TRHS)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   233
+      : LHSKind(TwineKind), RHSKind(TwineKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   234
+        (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   235
+        (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   236
+        this->LHS.twine = &TLHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   237
+        this->RHS.twine = &TRHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   238
+        assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   239
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   240
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   241
     /// Construct a twine from explicit values.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   242
-    explicit Twine(Child LHS, NodeKind LHSKind, Child RHS, NodeKind RHSKind)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   243
-        : LHS(LHS), RHS(RHS), LHSKind(LHSKind), RHSKind(RHSKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   244
+    explicit Twine(Child CLHS, NodeKind LHSKind, Child CRHS, NodeKind RHSKind)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   245
+        : LHS(CLHS), RHS(CRHS), LHSKind(LHSKind), RHSKind(RHSKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   246
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   247
+      (void) memcpy(LHS.buffer, CLHS.buffer, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   248
+      (void) memcpy(RHS.buffer, CRHS.buffer, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   249
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   250
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   251
-    /// Since the intended use of twines is as temporary objects, assignments
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   252
-    /// when concatenating might cause undefined behavior or stack corruptions
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   253
-    Twine &operator=(const Twine &Other) = delete;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   254
-
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   255
     /// Check for the null twine.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   256
     bool isNull() const {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   257
       return getLHSKind() == NullKind;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   258
@@ -252,11 +256,25 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   259
     /// @{
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   260
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   261
     /// Construct from an empty string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   262
-    /*implicit*/ Twine() : LHSKind(EmptyKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   263
+    /*implicit*/ Twine()
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   264
+    : LHS(), RHS(), LHSKind(EmptyKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   265
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   266
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   267
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   268
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   269
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   270
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   271
-    Twine(const Twine &) = default;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   272
+    Twine(const Twine &RHST)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   273
+    : LHS(), RHS(), LHSKind(RHST.LHSKind), RHSKind(RHST.RHSKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   274
+      (void) memcpy(LHS.buffer, RHST.LHS.buffer, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   275
+      (void) memcpy(RHS.buffer, RHST.RHS.buffer, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   276
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   277
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   278
+    Twine(Twine &&RHST)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   279
+    : LHS(), RHS(), LHSKind(RHST.LHSKind), RHSKind(RHST.RHSKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   280
+      (void) memcpy(LHS.buffer, RHST.LHS.buffer, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   281
+      (void) memcpy(RHS.buffer, RHST.RHS.buffer, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   282
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   283
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   284
     /// Construct from a C string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   285
     ///
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   286
@@ -264,7 +282,10 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   287
     /// optimized out for string constants. This allows Twine arguments have
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   288
     /// default "" values, without introducing unnecessary string constants.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   289
     /*implicit*/ Twine(const char *Str)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   290
-      : RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   291
+      : LHS(), RHS(), LHSKind(EmptyKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   292
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   293
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   294
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   295
       if (Str[0] != '\0') {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   296
         LHS.cString = Str;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   297
         LHSKind = CStringKind;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   298
@@ -276,76 +297,113 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   299
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   300
     /// Construct from an std::string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   301
     /*implicit*/ Twine(const std::string &Str)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   302
-      : LHSKind(StdStringKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   303
+      : LHS(), RHS(), LHSKind(StdStringKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   304
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   305
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   306
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   307
       LHS.stdString = &Str;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   308
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   309
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   310
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   311
     /// Construct from a StringRef.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   312
     /*implicit*/ Twine(const StringRef &Str)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   313
-      : LHSKind(StringRefKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   314
+      : LHS(), RHS(), LHSKind(StringRefKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   315
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   316
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   317
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   318
       LHS.stringRef = &Str;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   319
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   320
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   321
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   322
     /// Construct from a SmallString.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   323
     /*implicit*/ Twine(const SmallVectorImpl<char> &Str)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   324
-      : LHSKind(SmallStringKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   325
+      : LHS(), RHS(), LHSKind(SmallStringKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   326
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   327
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   328
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   329
       LHS.smallString = &Str;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   330
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   331
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   332
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   333
     /// Construct from a char.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   334
     explicit Twine(char Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   335
-      : LHSKind(CharKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   336
+      : LHS(), RHS(), LHSKind(CharKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   337
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   338
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   339
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   340
       LHS.character = Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   341
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   342
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   343
     /// Construct from a signed char.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   344
     explicit Twine(signed char Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   345
-      : LHSKind(CharKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   346
+      : LHS(), RHS(), LHSKind(CharKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   347
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   348
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   349
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   350
+      LHS.character = Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   351
       LHS.character = static_cast<char>(Val);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   352
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   353
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   354
     /// Construct from an unsigned char.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   355
     explicit Twine(unsigned char Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   356
-      : LHSKind(CharKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   357
+      : LHS(), RHS(), LHSKind(CharKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   358
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   359
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   360
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   361
       LHS.character = static_cast<char>(Val);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   362
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   363
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   364
     /// Construct a twine to print \p Val as an unsigned decimal integer.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   365
     explicit Twine(unsigned Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   366
-      : LHSKind(DecUIKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   367
+      : LHS(), RHS(), LHSKind(DecUIKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   368
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   369
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   370
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   371
       LHS.decUI = Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   372
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   373
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   374
     /// Construct a twine to print \p Val as a signed decimal integer.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   375
     explicit Twine(int Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   376
-      : LHSKind(DecIKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   377
+      : LHS(), RHS(), LHSKind(DecIKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   378
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   379
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   380
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   381
       LHS.decI = Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   382
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   383
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   384
     /// Construct a twine to print \p Val as an unsigned decimal integer.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   385
     explicit Twine(const unsigned long &Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   386
-      : LHSKind(DecULKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   387
+      : LHS(), RHS(), LHSKind(DecULKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   388
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   389
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   390
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   391
       LHS.decUL = &Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   392
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   393
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   394
     /// Construct a twine to print \p Val as a signed decimal integer.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   395
     explicit Twine(const long &Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   396
-      : LHSKind(DecLKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   397
+      : LHS(), RHS(), LHSKind(DecLKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   398
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   399
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   400
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   401
       LHS.decL = &Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   402
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   403
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   404
     /// Construct a twine to print \p Val as an unsigned decimal integer.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   405
     explicit Twine(const unsigned long long &Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   406
-      : LHSKind(DecULLKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   407
+      : LHS(), RHS(), LHSKind(DecULLKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   408
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   409
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   410
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   411
       LHS.decULL = &Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   412
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   413
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   414
     /// Construct a twine to print \p Val as a signed decimal integer.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   415
     explicit Twine(const long long &Val)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   416
-      : LHSKind(DecLLKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   417
+      : LHS(), RHS(), LHSKind(DecLLKind), RHSKind(EmptyKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   418
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   419
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   420
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   421
       LHS.decLL = &Val;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   422
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   423
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   424
@@ -355,27 +413,62 @@
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   425
     // right thing. Yet.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   426
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   427
     /// Construct as the concatenation of a C string and a StringRef.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   428
-    /*implicit*/ Twine(const char *LHS, const StringRef &RHS)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   429
-        : LHSKind(CStringKind), RHSKind(StringRefKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   430
-      this->LHS.cString = LHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   431
-      this->RHS.stringRef = &RHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   432
+    /*implicit*/ explicit Twine(const char *CLHS, const StringRef &SRHS)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   433
+        : LHS(), RHS(), LHSKind(CStringKind), RHSKind(StringRefKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   434
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   435
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   436
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   437
+      this->LHS.cString = CLHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   438
+      this->RHS.stringRef = &SRHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   439
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   440
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   441
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   442
     /// Construct as the concatenation of a StringRef and a C string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   443
-    /*implicit*/ Twine(const StringRef &LHS, const char *RHS)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   444
-        : LHSKind(StringRefKind), RHSKind(CStringKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   445
-      this->LHS.stringRef = &LHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   446
-      this->RHS.cString = RHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   447
+    /*implicit*/ explicit Twine(const StringRef &SLHS, const char *CRHS)
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   448
+        : LHS(), RHS(), LHSKind(StringRefKind), RHSKind(CStringKind) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   449
+      (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   450
+      (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   451
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   452
+      this->LHS.stringRef = &SLHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   453
+      this->RHS.cString = CRHS;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   454
       assert(isValid() && "Invalid twine!");
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   455
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   456
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   457
+    /// Assignment operators.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   458
+    Twine &operator=(const Twine &TRHS) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   459
+      if (this != &TRHS) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   460
+        (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   461
+        (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   462
+        (void) memcpy(LHS.buffer, TRHS.LHS.buffer, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   463
+        (void) memcpy(RHS.buffer, TRHS.RHS.buffer, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   464
+      }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   465
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   466
+      return *this;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   467
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   468
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   469
+    const Twine &operator=(Twine &&TRHS) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   470
+      if (this != &TRHS) {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   471
+        (void) memset(LHS.buffer, 0, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   472
+        (void) memset(RHS.buffer, 0, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   473
+        (void) memcpy(LHS.buffer, TRHS.LHS.buffer, sizeof(LHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   474
+        (void) memcpy(RHS.buffer, TRHS.RHS.buffer, sizeof(RHS.buffer));
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   475
+      }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   476
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   477
+      return *this;
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   478
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   479
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   480
     /// Create a 'null' string, which is an empty string that always
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   481
     /// concatenates to form another empty string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   482
     static Twine createNull() {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   483
       return Twine(NullKind);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   484
     }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   485
 
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   486
+    /// Create an empty string, which is an empty string that always
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   487
+    /// concatenates to form another empty string.
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   488
+    static Twine createEmpty() {
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   489
+      return Twine(EmptyKind);
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   490
+    }
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   491
+
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   492
     /// @}
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   493
     /// @name Numeric Conversions
92717ce71105 24326140 upgrade LLVM to 3.8.1
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   494
     /// @{