summaryrefslogtreecommitdiff
path: root/extra/llvm
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-02-10 01:12:52 -0800
committerroot <root@rshg054.dnsready.net>2013-02-10 01:12:52 -0800
commit1bb2648cde916ac27d3dd75d7b64a4ddc89787b7 (patch)
tree016bfa1969323404c37dbef29cfc7242a5a8e9f3 /extra/llvm
parente9c244cac8e5dc1c59c7e8b7bc885fef04224b70 (diff)
Sun Feb 10 01:12:35 PST 2013
Diffstat (limited to 'extra/llvm')
-rw-r--r--extra/llvm/clang-3.1-fix-lwg-2141.patch65
-rw-r--r--extra/llvm/clang-pure64.patch13
2 files changed, 0 insertions, 78 deletions
diff --git a/extra/llvm/clang-3.1-fix-lwg-2141.patch b/extra/llvm/clang-3.1-fix-lwg-2141.patch
deleted file mode 100644
index af10a5c33..000000000
--- a/extra/llvm/clang-3.1-fix-lwg-2141.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-Index: test/SemaCXX/libstdcxx_common_type_hack.cpp
-===================================================================
---- test/SemaCXX/libstdcxx_common_type_hack.cpp (revision 0)
-+++ test/SemaCXX/libstdcxx_common_type_hack.cpp (revision 166455)
-@@ -0,0 +1,33 @@
-+// RUN: %clang_cc1 -fsyntax-only %s -std=c++11 -verify
-+
-+// This is a test for an egregious hack in Clang that works around
-+// an issue with GCC's <type_traits> implementation. std::common_type
-+// relies on pre-standard rules for decltype(), in which it doesn't
-+// produce reference types so frequently.
-+
-+#ifdef BE_THE_HEADER
-+
-+#pragma GCC system_header
-+namespace std {
-+ template<typename T> T &&declval();
-+
-+ template<typename...Ts> struct common_type {};
-+ template<typename A, typename B> struct common_type<A, B> {
-+ // Under the rules in the standard, this always produces a
-+ // reference type.
-+ typedef decltype(true ? declval<A>() : declval<B>()) type;
-+ };
-+}
-+
-+#else
-+
-+#define BE_THE_HEADER
-+#include "libstdcxx_common_type_hack.cpp"
-+
-+using T = int;
-+using T = std::common_type<int, int>::type;
-+
-+using U = int; // expected-note {{here}}
-+using U = decltype(true ? std::declval<int>() : std::declval<int>()); // expected-error {{different types}}
-+
-+#endif
-Index: lib/Sema/SemaTemplateInstantiateDecl.cpp
-===================================================================
---- lib/Sema/SemaTemplateInstantiateDecl.cpp (revision 166454)
-+++ lib/Sema/SemaTemplateInstantiateDecl.cpp (revision 166455)
-@@ -158,6 +158,22 @@
- SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType());
- }
-
-+ // HACK: g++ has a bug where it gets the value kind of ?: wrong.
-+ // libstdc++ relies upon this bug in its implementation of common_type.
-+ // If we happen to be processing that implementation, fake up the g++ ?:
-+ // semantics. See LWG issue 2141 for more information on the bug.
-+ const DecltypeType *DT = DI->getType()->getAs<DecltypeType>();
-+ CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext());
-+ if (DT && RD && isa<ConditionalOperator>(DT->getUnderlyingExpr()) &&
-+ DT->isReferenceType() &&
-+ RD->getEnclosingNamespaceContext() == SemaRef.getStdNamespace() &&
-+ RD->getIdentifier() && RD->getIdentifier()->isStr("common_type") &&
-+ D->getIdentifier() && D->getIdentifier()->isStr("type") &&
-+ SemaRef.getSourceManager().isInSystemHeader(D->getLocStart()))
-+ // Fold it to the (non-reference) type which g++ would have produced.
-+ DI = SemaRef.Context.getTrivialTypeSourceInfo(
-+ DI->getType().getNonReferenceType());
-+
- // Create the new typedef
- TypedefNameDecl *Typedef;
- if (IsTypeAlias)
diff --git a/extra/llvm/clang-pure64.patch b/extra/llvm/clang-pure64.patch
deleted file mode 100644
index 9bbbfaa8b..000000000
--- a/extra/llvm/clang-pure64.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: lib/Driver/Tools.cpp
-===================================================================
---- lib/Driver/Tools.cpp (revision 123373)
-+++ lib/Driver/Tools.cpp (working copy)
-@@ -3306,7 +3306,7 @@
- else if (ToolChain.getArch() == llvm::Triple::ppc64)
- CmdArgs.push_back("/lib64/ld64.so.1");
- else
-- CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2");
-+ CmdArgs.push_back("/lib/ld-linux-x86-64.so.2");
- }
-
- CmdArgs.push_back("-o");