components/llvm/patches/012-TypeLocBuilder.cpp.patch
author xiao qing lu - Sun Microsystems - Beijing China <xiaoqing.lu@oracle.com>
Tue, 12 Jul 2016 19:50:03 -0700
changeset 6403 9d25dbe7eb71
parent 5434 9f55c805ce9d
permissions -rw-r--r--
23209274 Upgrade libsigsegv to 2.10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5434
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     1
# https://llvm.org/bugs/show_bug.cgi?id=24615
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     2
--- tools/clang/lib/Sema/TypeLocBuilder.h	2014-08-13 09:25:19.000000000 -0700
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
+++ tools/clang/lib/Sema/TypeLocBuilder.h	2015-08-28 16:45:41.733661825 -0700
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
@@ -39,7 +39,7 @@
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
 #endif
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
     
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
   /// The inline buffer.
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
-  enum { BufferMaxAlignment = llvm::AlignOf<void*>::Alignment };
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
+  enum { BufferMaxAlignment = llvm::AlignOf<uint64_t>::Alignment };
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
   llvm::AlignedCharArray<BufferMaxAlignment, InlineCapacity> InlineBuffer;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
   unsigned NumBytesAtAlign4, NumBytesAtAlign8;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
@@ -52,7 +52,7 @@
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
   ~TypeLocBuilder() {
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
     if (Buffer != InlineBuffer.buffer)
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
-      delete[] Buffer;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
+      std::free(Buffer);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
   }
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
   /// Ensures that this buffer has at least as much capacity as described.
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
--- tools/clang/lib/Sema/TypeLocBuilder.cpp	2014-05-25 23:22:03.000000000 -0700
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
+++ tools/clang/lib/Sema/TypeLocBuilder.cpp	2015-08-25 18:53:43.000000000 -0700
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
@@ -13,6 +13,8 @@
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
 //===----------------------------------------------------------------------===//
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
 #include "TypeLocBuilder.h"
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
+#include <cstring>
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
+#include <stdlib.h>
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    30
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
 using namespace clang;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
@@ -46,14 +48,36 @@
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
   assert(NewCapacity > Capacity);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
   // Allocate the new buffer and copy the old data into it.
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    37
-  char *NewBuffer = new char[NewCapacity];
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    38
+  char *NewBuffer;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
+
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
+#if defined(_MSC_VER)
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
+  NewBuffer = _aligned_malloc(NewCapacity, (size_t) BufferMaxAlignment);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
+  assert(NewBuffer && "_aligned_malloc failed!");
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
+  if (!NewBuffer) {
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
+    llvm::errs() << __PRETTY_FUNCTION__ << ": _aligned_malloc failed!\n";
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
+    abort();
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
+  }
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    47
+#else
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    48
+  int R = posix_memalign((void**) &NewBuffer,
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    49
+                         (size_t) BufferMaxAlignment, NewCapacity);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    50
+  assert((R == 0) && "posix_memalign failed!");
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    51
+  assert(NewBuffer && "posix_memalign failed!");
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
+  if ((R != 0) || (!NewBuffer)) {
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
+    llvm::errs() << __PRETTY_FUNCTION__ << ": posix_memalign failed!\n";
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
+    abort();
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    55
+  }
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
+#endif
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
+
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
+  (void) std::memset(NewBuffer, 0, NewCapacity);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
+
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
   unsigned NewIndex = Index + NewCapacity - Capacity;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    61
-  memcpy(&NewBuffer[NewIndex],
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
+  (void) std::memcpy(&NewBuffer[NewIndex],
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    63
          &Buffer[Index],
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
          Capacity - Index);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    65
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
-  if (Buffer != InlineBuffer.buffer)
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
-    delete[] Buffer;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
+  if (Buffer != InlineBuffer.buffer) {
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
+    std::free(Buffer);
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
+  }
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    71
 
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
   Buffer = NewBuffer;
9f55c805ce9d PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
   Capacity = NewCapacity;