- Backport support for C++0x (# 648990)

This commit is contained in:
Michel Alexandre Salim 2010-11-12 16:12:10 +01:00
parent 3107968a59
commit 3fc5264af2
3 changed files with 272 additions and 3 deletions

199
clang-2.8-alignOf.patch Normal file
View 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
View 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);

View file

@ -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}