diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/ADT/SmallVector.h | 19 | ||||
-rw-r--r-- | include/llvm/Analysis/ScalarEvolution.h | 1 | ||||
-rw-r--r-- | include/llvm/Support/MathExtras.h | 2 |
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 } |