aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/llvm/ADT/SmallVector.h19
-rw-r--r--include/llvm/Analysis/ScalarEvolution.h1
-rw-r--r--include/llvm/Support/MathExtras.h2
3 files changed, 21 insertions, 1 deletions
diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h
index b5ee6c454b..9f2842a638 100644
--- a/include/llvm/ADT/SmallVector.h
+++ b/include/llvm/ADT/SmallVector.h
@@ -18,6 +18,25 @@
#include <iterator>
#include <memory>
+#ifdef _MSC_VER
+namespace std {
+ // Fix bug in VC++ implementation of std::uninitialized_copy. Define
+ // additional overloads so that the copy is recognized as a scalar and
+ // not an object copy.
+ template<class T1, class T2>
+ inline _Scalar_ptr_iterator_tag _Ptr_cat(T1 **, T2 **) {
+ _Scalar_ptr_iterator_tag _Cat;
+ return _Cat;
+ }
+
+ template<class T1, class T2>
+ inline _Scalar_ptr_iterator_tag _Ptr_cat(T1* const *, T2 **) {
+ _Scalar_ptr_iterator_tag _Cat;
+ return _Cat;
+ }
+}
+#endif
+
namespace llvm {
/// SmallVectorImpl - This class consists of common code factored out of the
diff --git a/include/llvm/Analysis/ScalarEvolution.h b/include/llvm/Analysis/ScalarEvolution.h
index b950ca48c6..27d7e04a3e 100644
--- a/include/llvm/Analysis/ScalarEvolution.h
+++ b/include/llvm/Analysis/ScalarEvolution.h
@@ -22,6 +22,7 @@
#define LLVM_ANALYSIS_SCALAREVOLUTION_H
#include "llvm/Pass.h"
+#include "llvm/Support/DataTypes.h"
#include "llvm/Support/Streams.h"
#include <set>
diff --git a/include/llvm/Support/MathExtras.h b/include/llvm/Support/MathExtras.h
index f0bc91f8d0..4183343807 100644
--- a/include/llvm/Support/MathExtras.h
+++ b/include/llvm/Support/MathExtras.h
@@ -255,7 +255,7 @@ inline unsigned CountPopulation_64(uint64_t Value) {
uint64_t v = Value - ((Value >> 1) & 0x5555555555555555ULL);
v = (v & 0x3333333333333333ULL) + ((v >> 2) & 0x3333333333333333ULL);
v = (v + (v >> 4)) & 0x0F0F0F0F0F0F0F0FULL;
- return (uint64_t)(v * 0x0101010101010101ULL) >> 56;
+ return unsigned((uint64_t)(v * 0x0101010101010101ULL) >> 56);
#endif
}