[llvm] Apply upstream patch for Operator.h C++0x incompatibility (# 737365)

Michel Alexandre Salim salimma at fedoraproject.org
Fri Sep 30 14:34:04 UTC 2011


commit 3946039b0988b4ae0b3f88e5ac7506873ba905db
Author: Michel Alexandre Salim <salimma at fedoraproject.org>
Date:   Fri Sep 30 16:33:35 2011 +0200

    Apply upstream patch for Operator.h C++0x incompatibility (# 737365)

 llvm-2.9-PR9869_operator_destructor.patch |   74 +++++++++++++++++++++++++++++
 llvm.spec                                 |    9 +++-
 2 files changed, 82 insertions(+), 1 deletions(-)
---
diff --git a/llvm-2.9-PR9869_operator_destructor.patch b/llvm-2.9-PR9869_operator_destructor.patch
new file mode 100644
index 0000000..982d0ea
--- /dev/null
+++ b/llvm-2.9-PR9869_operator_destructor.patch
@@ -0,0 +1,74 @@
+From 6a61834d1c41971f80669a0484f1a0d2d8a1c286 Mon Sep 17 00:00:00 2001
+From: Eli Friedman <eli.friedman at gmail.com>
+Date: Sun, 8 May 2011 01:59:22 +0000
+Subject: [PATCH] PR9869: Add explicit destructor declarations to Operator
+ subclasses, to allow compiling Operator.h with gcc 4.6 in
+ C++0x mode.
+
+git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131062 91177308-0d34-0410-b5e6-96231b3b80d8
+---
+ include/llvm/Operator.h |   34 ++++++++++++++++++++++++++--------
+ 1 files changed, 26 insertions(+), 8 deletions(-)
+
+diff --git a/include/llvm/Operator.h b/include/llvm/Operator.h
+index ff2a0ad..e9aa499 100644
+--- a/include/llvm/Operator.h
++++ b/include/llvm/Operator.h
+@@ -186,28 +186,46 @@ public:
+ };
+ 
+ class AddOperator
+-  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {};
++  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {
++  ~AddOperator(); // DO NOT IMPLEMENT
++};
+ class SubOperator
+-  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {};
++  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {
++  ~SubOperator(); // DO NOT IMPLEMENT
++};
+ class MulOperator
+-  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {};
++  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {
++  ~MulOperator(); // DO NOT IMPLEMENT
++};
+ class ShlOperator
+-  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {};
++  : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {
++  ~ShlOperator(); // DO NOT IMPLEMENT
++};
+ 
+   
+ class SDivOperator
+-  : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {};
++  : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {
++  ~SDivOperator(); // DO NOT IMPLEMENT
++};
+ class UDivOperator
+-  : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {};
++  : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {
++  ~UDivOperator(); // DO NOT IMPLEMENT
++};
+ class AShrOperator
+-  : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {};
++  : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {
++  ~AShrOperator(); // DO NOT IMPLEMENT
++};
+ class LShrOperator
+-  : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {};
++  : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {
++  ~LShrOperator(); // DO NOT IMPLEMENT
++};
+   
+   
+   
+ class GEPOperator
+   : public ConcreteOperator<Operator, Instruction::GetElementPtr> {
++  ~GEPOperator(); // DO NOT IMPLEMENT
++
+   enum {
+     IsInBounds = (1 << 0)
+   };
+-- 
+1.7.6.4
+
diff --git a/llvm.spec b/llvm.spec
index 94c2647..b2ada29 100644
--- a/llvm.spec
+++ b/llvm.spec
@@ -15,7 +15,7 @@
 
 Name:           llvm
 Version:        2.9
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        The Low Level Virtual Machine
 
 Group:          Development/Languages
@@ -32,6 +32,9 @@ Patch0:         llvm-2.6-timestamp.patch
 # clang link failure if system GCC version is unknown
 # http://llvm.org/bugs/show_bug.cgi?id=8897
 Patch1:         clang-2.9-add_gcc_vers.patch
+# Operator.h incompatibility with GCC 4.6 in C++0x mode
+# http://llvm.org/bugs/show_bug.cgi?id=9869
+Patch2:         llvm-2.9-PR9869_operator_destructor.patch
 
 BuildRequires:  bison
 BuildRequires:  chrpath
@@ -214,6 +217,7 @@ mv clang-%{version}%{?prerel} tools/clang
 
 # llvm patches
 %patch0 -p1 -b .timestamp
+%patch2 -p2 -b .pr9869_operator_destructor
 
 # clang patches
 pushd tools/clang
@@ -462,6 +466,9 @@ exit 0
 
 
 %changelog
+* Fri Sep 30 2011 Michel Salim <salimma at fedoraproject.org> - 2.9-4
+- Apply upstream patch for Operator.h C++0x incompatibility (# 737365)
+
 * Sat Aug  6 2011 Michel Salim <salimma at fedoraproject.org> - 2.9-3
 - Disable LLVM test suite on ppc64 architecture  (# 728604)
 - Disable clang test suite on ppc* architectures (-)


More information about the scm-commits mailing list