mirror of
https://src.fedoraproject.org/rpms/llvm.git
synced 2024-11-24 17:34:47 +00:00
- Backport support for C++0x (# 648990)
This commit is contained in:
parent
3107968a59
commit
3fc5264af2
3 changed files with 272 additions and 3 deletions
199
clang-2.8-alignOf.patch
Normal file
199
clang-2.8-alignOf.patch
Normal file
|
@ -0,0 +1,199 @@
|
||||||
|
Index: lib/Basic/IdentifierTable.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/Basic/IdentifierTable.cpp (revision 117774)
|
||||||
|
+++ lib/Basic/IdentifierTable.cpp (revision 117775)
|
||||||
|
@@ -390,7 +390,7 @@
|
||||||
|
unsigned Size = sizeof(MultiKeywordSelector) + nKeys*sizeof(IdentifierInfo *);
|
||||||
|
MultiKeywordSelector *SI =
|
||||||
|
(MultiKeywordSelector*)SelTabImpl.Allocator.Allocate(Size,
|
||||||
|
- llvm::alignof<MultiKeywordSelector>());
|
||||||
|
+ llvm::alignOf<MultiKeywordSelector>());
|
||||||
|
new (SI) MultiKeywordSelector(nKeys, IIV);
|
||||||
|
SelTabImpl.Table.InsertNode(SI, InsertPos);
|
||||||
|
return Selector(SI);
|
||||||
|
Index: lib/AST/ExprCXX.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/AST/ExprCXX.cpp (revision 117774)
|
||||||
|
+++ lib/AST/ExprCXX.cpp (revision 117775)
|
||||||
|
@@ -233,7 +233,7 @@
|
||||||
|
if (NumTemplateArgs != 0)
|
||||||
|
size += ExplicitTemplateArgumentList::sizeFor(NumTemplateArgs);
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(size, llvm::alignof<UnresolvedLookupExpr>());
|
||||||
|
+ void *Mem = C.Allocate(size, llvm::alignOf<UnresolvedLookupExpr>());
|
||||||
|
UnresolvedLookupExpr *E = new (Mem) UnresolvedLookupExpr(EmptyShell());
|
||||||
|
E->HasExplicitTemplateArgs = NumTemplateArgs != 0;
|
||||||
|
return E;
|
||||||
|
@@ -261,7 +261,7 @@
|
||||||
|
if (NumResults) {
|
||||||
|
Results = static_cast<DeclAccessPair *>(
|
||||||
|
C.Allocate(sizeof(DeclAccessPair) * NumResults,
|
||||||
|
- llvm::alignof<DeclAccessPair>()));
|
||||||
|
+ llvm::alignOf<DeclAccessPair>()));
|
||||||
|
memcpy(Results, &*Begin.getIterator(),
|
||||||
|
NumResults * sizeof(DeclAccessPair));
|
||||||
|
}
|
||||||
|
@@ -737,7 +737,7 @@
|
||||||
|
if (TemplateArgs)
|
||||||
|
size += ExplicitTemplateArgumentList::sizeFor(*TemplateArgs);
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(size, llvm::alignof<CXXDependentScopeMemberExpr>());
|
||||||
|
+ void *Mem = C.Allocate(size, llvm::alignOf<CXXDependentScopeMemberExpr>());
|
||||||
|
return new (Mem) CXXDependentScopeMemberExpr(C, Base, BaseType,
|
||||||
|
IsArrow, OperatorLoc,
|
||||||
|
Qualifier, QualifierRange,
|
||||||
|
@@ -756,7 +756,7 @@
|
||||||
|
|
||||||
|
std::size_t size = sizeof(CXXDependentScopeMemberExpr) +
|
||||||
|
ExplicitTemplateArgumentList::sizeFor(NumTemplateArgs);
|
||||||
|
- void *Mem = C.Allocate(size, llvm::alignof<CXXDependentScopeMemberExpr>());
|
||||||
|
+ void *Mem = C.Allocate(size, llvm::alignOf<CXXDependentScopeMemberExpr>());
|
||||||
|
CXXDependentScopeMemberExpr *E
|
||||||
|
= new (Mem) CXXDependentScopeMemberExpr(C, 0, QualType(),
|
||||||
|
0, SourceLocation(), 0,
|
||||||
|
@@ -812,7 +812,7 @@
|
||||||
|
if (TemplateArgs)
|
||||||
|
size += ExplicitTemplateArgumentList::sizeFor(*TemplateArgs);
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(size, llvm::alignof<UnresolvedMemberExpr>());
|
||||||
|
+ void *Mem = C.Allocate(size, llvm::alignOf<UnresolvedMemberExpr>());
|
||||||
|
return new (Mem) UnresolvedMemberExpr(C,
|
||||||
|
Dependent ? C.DependentTy : C.OverloadTy,
|
||||||
|
Dependent, HasUnresolvedUsing, Base, BaseType,
|
||||||
|
@@ -826,7 +826,7 @@
|
||||||
|
if (NumTemplateArgs != 0)
|
||||||
|
size += ExplicitTemplateArgumentList::sizeFor(NumTemplateArgs);
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(size, llvm::alignof<UnresolvedMemberExpr>());
|
||||||
|
+ void *Mem = C.Allocate(size, llvm::alignOf<UnresolvedMemberExpr>());
|
||||||
|
UnresolvedMemberExpr *E = new (Mem) UnresolvedMemberExpr(EmptyShell());
|
||||||
|
E->HasExplicitTemplateArgs = NumTemplateArgs != 0;
|
||||||
|
return E;
|
||||||
|
Index: lib/AST/DeclObjC.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/AST/DeclObjC.cpp (revision 117774)
|
||||||
|
+++ lib/AST/DeclObjC.cpp (revision 117775)
|
||||||
|
@@ -711,7 +711,7 @@
|
||||||
|
void ObjCClassDecl::setClassList(ASTContext &C, ObjCInterfaceDecl*const*List,
|
||||||
|
const SourceLocation *Locs, unsigned Num) {
|
||||||
|
ForwardDecls = (ObjCClassRef*) C.Allocate(sizeof(ObjCClassRef)*Num,
|
||||||
|
- llvm::alignof<ObjCClassRef>());
|
||||||
|
+ llvm::alignOf<ObjCClassRef>());
|
||||||
|
for (unsigned i = 0; i < Num; ++i)
|
||||||
|
new (&ForwardDecls[i]) ObjCClassRef(List[i], Locs[i]);
|
||||||
|
|
||||||
|
Index: lib/AST/Stmt.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/AST/Stmt.cpp (revision 117774)
|
||||||
|
+++ lib/AST/Stmt.cpp (revision 117775)
|
||||||
|
@@ -416,7 +416,7 @@
|
||||||
|
Stmt *atFinallyStmt) {
|
||||||
|
unsigned Size = sizeof(ObjCAtTryStmt) +
|
||||||
|
(1 + NumCatchStmts + (atFinallyStmt != 0)) * sizeof(Stmt *);
|
||||||
|
- void *Mem = Context.Allocate(Size, llvm::alignof<ObjCAtTryStmt>());
|
||||||
|
+ void *Mem = Context.Allocate(Size, llvm::alignOf<ObjCAtTryStmt>());
|
||||||
|
return new (Mem) ObjCAtTryStmt(atTryLoc, atTryStmt, CatchStmts, NumCatchStmts,
|
||||||
|
atFinallyStmt);
|
||||||
|
}
|
||||||
|
@@ -426,7 +426,7 @@
|
||||||
|
bool HasFinally) {
|
||||||
|
unsigned Size = sizeof(ObjCAtTryStmt) +
|
||||||
|
(1 + NumCatchStmts + HasFinally) * sizeof(Stmt *);
|
||||||
|
- void *Mem = Context.Allocate(Size, llvm::alignof<ObjCAtTryStmt>());
|
||||||
|
+ void *Mem = Context.Allocate(Size, llvm::alignOf<ObjCAtTryStmt>());
|
||||||
|
return new (Mem) ObjCAtTryStmt(EmptyShell(), NumCatchStmts, HasFinally);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -448,7 +448,7 @@
|
||||||
|
std::size_t Size = sizeof(CXXTryStmt);
|
||||||
|
Size += ((numHandlers + 1) * sizeof(Stmt));
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(Size, llvm::alignof<CXXTryStmt>());
|
||||||
|
+ void *Mem = C.Allocate(Size, llvm::alignOf<CXXTryStmt>());
|
||||||
|
return new (Mem) CXXTryStmt(tryLoc, tryBlock, handlers, numHandlers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -457,7 +457,7 @@
|
||||||
|
std::size_t Size = sizeof(CXXTryStmt);
|
||||||
|
Size += ((numHandlers + 1) * sizeof(Stmt));
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(Size, llvm::alignof<CXXTryStmt>());
|
||||||
|
+ void *Mem = C.Allocate(Size, llvm::alignOf<CXXTryStmt>());
|
||||||
|
return new (Mem) CXXTryStmt(Empty, numHandlers);
|
||||||
|
}
|
||||||
|
|
||||||
|
Index: lib/AST/Expr.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/AST/Expr.cpp (revision 117774)
|
||||||
|
+++ lib/AST/Expr.cpp (revision 117775)
|
||||||
|
@@ -257,7 +257,7 @@
|
||||||
|
if (TemplateArgs)
|
||||||
|
Size += ExplicitTemplateArgumentList::sizeFor(*TemplateArgs);
|
||||||
|
|
||||||
|
- void *Mem = Context.Allocate(Size, llvm::alignof<DeclRefExpr>());
|
||||||
|
+ void *Mem = Context.Allocate(Size, llvm::alignOf<DeclRefExpr>());
|
||||||
|
return new (Mem) DeclRefExpr(Qualifier, QualifierRange, D, NameInfo,
|
||||||
|
TemplateArgs, T);
|
||||||
|
}
|
||||||
|
@@ -271,7 +271,7 @@
|
||||||
|
if (NumTemplateArgs)
|
||||||
|
Size += ExplicitTemplateArgumentList::sizeFor(NumTemplateArgs);
|
||||||
|
|
||||||
|
- void *Mem = Context.Allocate(Size, llvm::alignof<DeclRefExpr>());
|
||||||
|
+ void *Mem = Context.Allocate(Size, llvm::alignOf<DeclRefExpr>());
|
||||||
|
return new (Mem) DeclRefExpr(EmptyShell());
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -432,7 +432,7 @@
|
||||||
|
// any concatenated string tokens.
|
||||||
|
void *Mem = C.Allocate(sizeof(StringLiteral)+
|
||||||
|
sizeof(SourceLocation)*(NumStrs-1),
|
||||||
|
- llvm::alignof<StringLiteral>());
|
||||||
|
+ llvm::alignOf<StringLiteral>());
|
||||||
|
StringLiteral *SL = new (Mem) StringLiteral(Ty);
|
||||||
|
|
||||||
|
// OPTIMIZE: could allocate this appended to the StringLiteral.
|
||||||
|
@@ -452,7 +452,7 @@
|
||||||
|
StringLiteral *StringLiteral::CreateEmpty(ASTContext &C, unsigned NumStrs) {
|
||||||
|
void *Mem = C.Allocate(sizeof(StringLiteral)+
|
||||||
|
sizeof(SourceLocation)*(NumStrs-1),
|
||||||
|
- llvm::alignof<StringLiteral>());
|
||||||
|
+ llvm::alignOf<StringLiteral>());
|
||||||
|
StringLiteral *SL = new (Mem) StringLiteral(QualType());
|
||||||
|
SL->StrData = 0;
|
||||||
|
SL->ByteLength = 0;
|
||||||
|
@@ -714,7 +714,7 @@
|
||||||
|
if (targs)
|
||||||
|
Size += ExplicitTemplateArgumentList::sizeFor(*targs);
|
||||||
|
|
||||||
|
- void *Mem = C.Allocate(Size, llvm::alignof<MemberExpr>());
|
||||||
|
+ void *Mem = C.Allocate(Size, llvm::alignOf<MemberExpr>());
|
||||||
|
MemberExpr *E = new (Mem) MemberExpr(base, isarrow, memberdecl, nameinfo, ty);
|
||||||
|
|
||||||
|
if (hasQualOrFound) {
|
||||||
|
Index: lib/AST/DeclCXX.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/AST/DeclCXX.cpp (revision 117774)
|
||||||
|
+++ lib/AST/DeclCXX.cpp (revision 117775)
|
||||||
|
@@ -1057,7 +1057,7 @@
|
||||||
|
unsigned NumIndices) {
|
||||||
|
void *Mem = Context.Allocate(sizeof(CXXBaseOrMemberInitializer) +
|
||||||
|
sizeof(VarDecl *) * NumIndices,
|
||||||
|
- llvm::alignof<CXXBaseOrMemberInitializer>());
|
||||||
|
+ llvm::alignOf<CXXBaseOrMemberInitializer>());
|
||||||
|
return new (Mem) CXXBaseOrMemberInitializer(Context, Member, MemberLoc,
|
||||||
|
L, Init, R, Indices, NumIndices);
|
||||||
|
}
|
||||||
|
Index: lib/Lex/TokenLexer.cpp
|
||||||
|
===================================================================
|
||||||
|
--- lib/Lex/TokenLexer.cpp (revision 117774)
|
||||||
|
+++ lib/Lex/TokenLexer.cpp (revision 117775)
|
||||||
|
@@ -287,7 +287,7 @@
|
||||||
|
llvm::BumpPtrAllocator &Alloc = PP.getPreprocessorAllocator();
|
||||||
|
Token *Res =
|
||||||
|
static_cast<Token *>(Alloc.Allocate(sizeof(Token)*ResultToks.size(),
|
||||||
|
- llvm::alignof<Token>()));
|
||||||
|
+ llvm::alignOf<Token>()));
|
||||||
|
if (NumTokens)
|
||||||
|
memcpy(Res, &ResultToks[0], NumTokens*sizeof(Token));
|
||||||
|
Tokens = Res;
|
59
llvm-2.8-alignOf.patch
Normal file
59
llvm-2.8-alignOf.patch
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
Index: include/llvm/ADT/StringMap.h
|
||||||
|
===================================================================
|
||||||
|
--- include/llvm/ADT/StringMap.h (revision 117773)
|
||||||
|
+++ include/llvm/ADT/StringMap.h (revision 117774)
|
||||||
|
@@ -167,7 +167,7 @@
|
||||||
|
|
||||||
|
unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
|
||||||
|
KeyLength+1;
|
||||||
|
- unsigned Alignment = alignof<StringMapEntry>();
|
||||||
|
+ unsigned Alignment = alignOf<StringMapEntry>();
|
||||||
|
|
||||||
|
StringMapEntry *NewItem =
|
||||||
|
static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
|
||||||
|
Index: include/llvm/Support/AlignOf.h
|
||||||
|
===================================================================
|
||||||
|
--- include/llvm/Support/AlignOf.h (revision 117773)
|
||||||
|
+++ include/llvm/Support/AlignOf.h (revision 117774)
|
||||||
|
@@ -49,12 +49,12 @@
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
-/// alignof - A templated function that returns the mininum alignment of
|
||||||
|
+/// alignOf - A templated function that returns the mininum alignment of
|
||||||
|
/// of a type. This provides no extra functionality beyond the AlignOf
|
||||||
|
/// class besides some cosmetic cleanliness. Example usage:
|
||||||
|
-/// alignof<int>() returns the alignment of an int.
|
||||||
|
+/// alignOf<int>() returns the alignment of an int.
|
||||||
|
template <typename T>
|
||||||
|
-static inline unsigned alignof() { return AlignOf<T>::Alignment; }
|
||||||
|
+static inline unsigned alignOf() { return AlignOf<T>::Alignment; }
|
||||||
|
|
||||||
|
} // end namespace llvm
|
||||||
|
#endif
|
||||||
|
Index: include/llvm/Support/Allocator.h
|
||||||
|
===================================================================
|
||||||
|
--- include/llvm/Support/Allocator.h (revision 117773)
|
||||||
|
+++ include/llvm/Support/Allocator.h (revision 117774)
|
||||||
|
@@ -201,7 +201,7 @@
|
||||||
|
char *End = Slab == Allocator.CurSlab ? Allocator.CurPtr :
|
||||||
|
(char *)Slab + Slab->Size;
|
||||||
|
for (char *Ptr = (char*)(Slab+1); Ptr < End; Ptr += sizeof(T)) {
|
||||||
|
- Ptr = Allocator.AlignPtr(Ptr, alignof<T>());
|
||||||
|
+ Ptr = Allocator.AlignPtr(Ptr, alignOf<T>());
|
||||||
|
if (Ptr + sizeof(T) <= End)
|
||||||
|
reinterpret_cast<T*>(Ptr)->~T();
|
||||||
|
}
|
||||||
|
Index: include/llvm/CodeGen/SlotIndexes.h
|
||||||
|
===================================================================
|
||||||
|
--- include/llvm/CodeGen/SlotIndexes.h (revision 117773)
|
||||||
|
+++ include/llvm/CodeGen/SlotIndexes.h (revision 117774)
|
||||||
|
@@ -393,7 +393,7 @@
|
||||||
|
IndexListEntry *entry =
|
||||||
|
static_cast<IndexListEntry*>(
|
||||||
|
ileAllocator.Allocate(sizeof(IndexListEntry),
|
||||||
|
- alignof<IndexListEntry>()));
|
||||||
|
+ alignOf<IndexListEntry>()));
|
||||||
|
|
||||||
|
new (entry) IndexListEntry(mi, index);
|
||||||
|
|
17
llvm.spec
17
llvm.spec
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
Name: llvm
|
Name: llvm
|
||||||
Version: 2.8
|
Version: 2.8
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
Summary: The Low Level Virtual Machine
|
Summary: The Low Level Virtual Machine
|
||||||
|
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
|
@ -22,6 +22,10 @@ Source0: http://llvm.org/releases/%{version}/llvm-%{version}.tgz
|
||||||
Source1: http://llvm.org/releases/%{version}/clang-%{version}.tgz
|
Source1: http://llvm.org/releases/%{version}/clang-%{version}.tgz
|
||||||
# Data files should be installed with timestamps preserved
|
# Data files should be installed with timestamps preserved
|
||||||
Patch0: llvm-2.6-timestamp.patch
|
Patch0: llvm-2.6-timestamp.patch
|
||||||
|
# rename alignof -> alignOf for C++0x support
|
||||||
|
# http://llvm.org/bugs/show_bug.cgi?id=8423
|
||||||
|
Patch1: llvm-2.8-alignOf.patch
|
||||||
|
Patch2: clang-2.8-alignOf.patch
|
||||||
|
|
||||||
BuildRequires: bison
|
BuildRequires: bison
|
||||||
BuildRequires: chrpath
|
BuildRequires: chrpath
|
||||||
|
@ -191,6 +195,10 @@ HTML documentation for LLVM's OCaml binding.
|
||||||
mv clang-%{version} tools/clang
|
mv clang-%{version} tools/clang
|
||||||
|
|
||||||
%patch0 -p1 -b .timestamp
|
%patch0 -p1 -b .timestamp
|
||||||
|
%patch1 -p0 -b .alignOf
|
||||||
|
pushd tools/clang
|
||||||
|
%patch2 -p0 -b .alignOf
|
||||||
|
popd
|
||||||
|
|
||||||
# Encoding fix
|
# Encoding fix
|
||||||
#(cd tools/clang/docs && \
|
#(cd tools/clang/docs && \
|
||||||
|
@ -278,10 +286,10 @@ done
|
||||||
rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools}
|
rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools}
|
||||||
|
|
||||||
|
|
||||||
#find %{buildroot} -name .dir -print0 | xargs -0r rm -f
|
#find %%{buildroot} -name .dir -print0 | xargs -0r rm -f
|
||||||
file %{buildroot}/%{_bindir}/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
file %{buildroot}/%{_bindir}/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
||||||
file %{buildroot}/%{_libdir}/llvm/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
file %{buildroot}/%{_libdir}/llvm/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
||||||
#chrpath -d %{buildroot}/%{_libexecdir}/clang-cc
|
#chrpath -d %%{buildroot}/%%{_libexecdir}/clang-cc
|
||||||
|
|
||||||
# Get rid of erroneously installed example files.
|
# Get rid of erroneously installed example files.
|
||||||
rm %{buildroot}%{_libdir}/%{name}/*LLVMHello.*
|
rm %{buildroot}%{_libdir}/%{name}/*LLVMHello.*
|
||||||
|
@ -383,6 +391,9 @@ find examples -name 'Makefile' | xargs -0r rm -f
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Nov 12 2010 Michel Salim <salimma@fedoraproject.org> - 2.8-4
|
||||||
|
- Backport support for C++0x (# 648990)
|
||||||
|
|
||||||
* Fri Oct 15 2010 Michel Salim <salimma@fedoraproject.org> - 2.8-3
|
* Fri Oct 15 2010 Michel Salim <salimma@fedoraproject.org> - 2.8-3
|
||||||
- Re-add omitted %%{_includedir}
|
- Re-add omitted %%{_includedir}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue