From 1bb2648cde916ac27d3dd75d7b64a4ddc89787b7 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 10 Feb 2013 01:12:52 -0800 Subject: Sun Feb 10 01:12:35 PST 2013 --- extra/llvm/clang-3.1-fix-lwg-2141.patch | 65 --------------------------------- extra/llvm/clang-pure64.patch | 13 ------- 2 files changed, 78 deletions(-) delete mode 100644 extra/llvm/clang-3.1-fix-lwg-2141.patch delete mode 100644 extra/llvm/clang-pure64.patch (limited to 'extra/llvm') 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 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 T &&declval(); -+ -+ template struct common_type {}; -+ template struct common_type { -+ // Under the rules in the standard, this always produces a -+ // reference type. -+ typedef decltype(true ? declval() : declval()) type; -+ }; -+} -+ -+#else -+ -+#define BE_THE_HEADER -+#include "libstdcxx_common_type_hack.cpp" -+ -+using T = int; -+using T = std::common_type::type; -+ -+using U = int; // expected-note {{here}} -+using U = decltype(true ? std::declval() : std::declval()); // 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(); -+ CXXRecordDecl *RD = dyn_cast(D->getDeclContext()); -+ if (DT && RD && isa(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"); -- cgit v1.2.3-54-g00ecf