Index: include/__config
===================================================================
--- include/__config	(revision 190838)
+++ include/__config	(working copy)
@@ -579,4 +579,17 @@
 #define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit
 #endif
 
+#define _LIBCPP_TOSTRING2(x) #x
+#define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x)
+
+#ifndef _LIBCPP_MSVC
+#   define _LIBCPP_DO_PRAGMA(x) _Pragma(#x)
+// Not supported by GCC 4.2.1. Issues a note with gcc and a warning with clang++.
+#   define _LIBCPP_WARNING(x) _LIBCPP_DO_PRAGMA(message(x))
+#else
+#   define _LIBCPP_DO_PRAGMA(x) __pragma(#x)
+// Issue a note not a warning in the command line compiler diagnostic. Appears as a warning in VS.
+#   define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x))
+#endif
+
 #endif  // _LIBCPP_CONFIG
Index: include/__undef_min_max
===================================================================
--- include/__undef_min_max	(revision 190838)
+++ include/__undef_min_max	(working copy)
@@ -9,11 +9,19 @@
 //===----------------------------------------------------------------------===//
 
 #ifdef min
+#ifndef _LIBCPP_MSVC
 #warning: macro min is incompatible with C++.  #undefing min
+#else
+_LIBCPP_WARNING("macro min is incompatible with C++.  #undefing min")
+#endif
 #undef min
 #endif
 
 #ifdef max
+#ifndef _LIBCPP_MSVC
 #warning: macro max is incompatible with C++.  #undefing max
+#else
+_LIBCPP_WARNING("macro max is incompatible with C++.  #undefing max")
+#endif
 #undef max
 #endif
Index: include/ext/hash_map
===================================================================
--- include/ext/hash_map	(revision 190838)
+++ include/ext/hash_map	(working copy)
@@ -206,8 +206,12 @@
 #include <ext/__hash>
 
 #if __DEPRECATED
+#ifndef _LIBCPP_MSVC
 #warning Use of the header <ext/hash_map> is deprecated.  Migrate to <unordered_map>
+#else
+_LIBCPP_WARNING("Use of the header <ext/hash_map> is deprecated.  Migrate to <unordered_map>")
 #endif
+#endif
 
 #pragma GCC system_header
 
Index: include/ext/hash_set
===================================================================
--- include/ext/hash_set	(revision 190838)
+++ include/ext/hash_set	(working copy)
@@ -199,8 +199,12 @@
 #include <ext/__hash>
 
 #if __DEPRECATED
+#ifndef _LIBCPP_MSVC
 #warning Use of the header <ext/hash_set> is deprecated.  Migrate to <unordered_set>
+#else
+_LIBCPP_WARNING("Use of the header <ext/hash_set> is deprecated.  Migrate to <unordered_set>")
 #endif
+#endif
 
 namespace __gnu_cxx {
 
Index: src/exception.cpp
===================================================================
--- src/exception.cpp	(revision 190838)
+++ src/exception.cpp	(working copy)
@@ -1,3 +1,5 @@
+
+
 //===------------------------ exception.cpp -------------------------------===//
 //
 //                     The LLVM Compiler Infrastructure
@@ -111,12 +113,17 @@
     // on Darwin, there is a helper function so __cxa_get_globals is private
     return __cxa_uncaught_exception();
 #else  // __APPLE__
-    #warning uncaught_exception not yet implemented
+#   ifndef _LIBCPP_MSVC
+#       warning uncaught_exception not yet implemented
+#   else
+        _LIBCPP_WARNING("uncaught_exception not yet implemented")
+#   endif
     printf("uncaught_exception not yet implemented\n");
     ::abort();
 #endif  // __APPLE__
 }
 
+
 #ifndef _LIBCPPABI_VERSION
 
 exception::~exception() _NOEXCEPT
@@ -149,7 +156,11 @@
 #if HAVE_DEPENDENT_EH_ABI
     __cxa_decrement_exception_refcount(__ptr_);
 #else
-    #warning exception_ptr not yet implemented
+#   ifndef _LIBCPP_MSVC
+#       warning exception_ptr not yet implemented
+#   else
+        _LIBCPP_WARNING("exception_ptr not yet implemented")
+#   endif
     printf("exception_ptr not yet implemented\n");
     ::abort();
 #endif  // __APPLE__
@@ -161,9 +172,15 @@
 #if HAVE_DEPENDENT_EH_ABI
     __cxa_increment_exception_refcount(__ptr_);
 #else
-    #warning exception_ptr not yet implemented
+
+#   ifndef _LIBCPP_MSVC
+#       warning exception_ptr not yet implemented
+#   else
+        _LIBCPP_WARNING("exception_ptr not yet implemented")
+#   endif
     printf("exception_ptr not yet implemented\n");
     ::abort();
+
 #endif  // __APPLE__
 }
 
@@ -178,9 +195,15 @@
     }
     return *this;
 #else  // __APPLE__
-    #warning exception_ptr not yet implemented
+
+#   ifndef _LIBCPP_MSVC
+#       warning exception_ptr not yet implemented
+#   else
+        _LIBCPP_WARNING("exception_ptr not yet implemented")
+#   endif
     printf("exception_ptr not yet implemented\n");
     ::abort();
+
 #endif  // __APPLE__
 }
 
@@ -213,7 +236,11 @@
     ptr.__ptr_ = __cxa_current_primary_exception();
     return ptr;
 #else  // __APPLE__
-    #warning exception_ptr not yet implemented
+#   ifndef _LIBCPP_MSVC
+#       warning exception_ptr not yet implemented
+#   else
+        _LIBCPP_WARNING( "exception_ptr not yet implemented" )
+#   endif
     printf("exception_ptr not yet implemented\n");
     ::abort();
 #endif  // __APPLE__
@@ -227,7 +254,11 @@
     // if p.__ptr_ is NULL, above returns so we terminate
     terminate();
 #else  // __APPLE__
-    #warning exception_ptr not yet implemented
+#   ifndef _LIBCPP_MSVC
+#       warning exception_ptr not yet implemented
+#   else
+        _LIBCPP_WARNING("exception_ptr not yet implemented")
+#   endif
     printf("exception_ptr not yet implemented\n");
     ::abort();
 #endif  // __APPLE__
Index: src/thread.cpp
===================================================================
--- src/thread.cpp	(revision 190838)
+++ src/thread.cpp	(working copy)
@@ -89,7 +89,11 @@
 #else  // defined(CTL_HW) && defined(HW_NCPU)
     // TODO: grovel through /proc or check cpuid on x86 and similar
     // instructions on other architectures.
-#warning hardware_concurrency not yet implemented
+#   ifndef _LIBCPP_MSVC
+#       warning hardware_concurrency not yet implemented
+#   else
+        _LIBCPP_WARNING("hardware_concurrency not yet implemented")
+#   endif
     return 0;  // Means not computable [thread.thread.static]
 #endif  // defined(CTL_HW) && defined(HW_NCPU)
 }
