[cfe-commits] r138075 - /cfe/trunk/test/CodeGenCXX/weak-external.cpp

Nick Lewycky nicholas at mxc.ca
Fri Aug 19 13:43:24 PDT 2011


Author: nicholas
Date: Fri Aug 19 15:43:24 2011
New Revision: 138075

URL: http://llvm.org/viewvc/llvm-project?rev=138075&view=rev
Log:
Do not depend on the standard library on the system. Replace the #include with
the relevant section of libcxx.

As an aside, I am not at all confident that this test is still testing that it's
supposed to.

Modified:
    cfe/trunk/test/CodeGenCXX/weak-external.cpp

Modified: cfe/trunk/test/CodeGenCXX/weak-external.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/weak-external.cpp?rev=138075&r1=138074&r2=138075&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/weak-external.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/weak-external.cpp Fri Aug 19 15:43:24 2011
@@ -12,7 +12,54 @@
 // template, it's instantiation is *not* suppressed (despite being in
 // basic_string<char>), so we would emit it as a weak definition.
 
-#include <stdexcept>
+#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
+#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
+#define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default")))
+#if (__has_feature(cxx_noexcept))
+#  define _NOEXCEPT noexcept
+#  define _NOEXCEPT_(x) noexcept(x)
+#else
+#  define _NOEXCEPT throw()
+#  define _NOEXCEPT_(x)
+#endif
+
+namespace std  // purposefully not using versioning namespace
+{
+
+template<class charT> struct char_traits;
+template<class T>     class allocator;
+template <class _CharT,
+          class _Traits = char_traits<_CharT>,
+          class _Allocator = allocator<_CharT> >
+    class _LIBCPP_VISIBLE basic_string;
+typedef basic_string<char, char_traits<char>, allocator<char> > string;
+
+class _LIBCPP_EXCEPTION_ABI exception
+{
+public:
+    _LIBCPP_INLINE_VISIBILITY exception() _NOEXCEPT {}
+    virtual ~exception() _NOEXCEPT;
+    virtual const char* what() const _NOEXCEPT;
+};
+
+class _LIBCPP_EXCEPTION_ABI runtime_error
+    : public exception
+{
+private:
+    void* __imp_;
+public:
+    explicit runtime_error(const string&);
+    explicit runtime_error(const char*);
+
+    runtime_error(const runtime_error&) _NOEXCEPT;
+    runtime_error& operator=(const runtime_error&) _NOEXCEPT;
+
+    virtual ~runtime_error() _NOEXCEPT;
+
+    virtual const char* what() const _NOEXCEPT;
+};
+
+}
 
 void dummysymbol() {
   throw(std::runtime_error("string"));





More information about the cfe-commits mailing list