mirror of
https://src.fedoraproject.org/rpms/llvm.git
synced 2024-11-24 09:32:42 +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
|
||||
Version: 2.8
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: The Low Level Virtual Machine
|
||||
|
||||
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
|
||||
# Data files should be installed with timestamps preserved
|
||||
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: chrpath
|
||||
|
@ -191,6 +195,10 @@ HTML documentation for LLVM's OCaml binding.
|
|||
mv clang-%{version} tools/clang
|
||||
|
||||
%patch0 -p1 -b .timestamp
|
||||
%patch1 -p0 -b .alignOf
|
||||
pushd tools/clang
|
||||
%patch2 -p0 -b .alignOf
|
||||
popd
|
||||
|
||||
# Encoding fix
|
||||
#(cd tools/clang/docs && \
|
||||
|
@ -278,10 +286,10 @@ done
|
|||
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}/%{_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.
|
||||
rm %{buildroot}%{_libdir}/%{name}/*LLVMHello.*
|
||||
|
@ -383,6 +391,9 @@ find examples -name 'Makefile' | xargs -0r rm -f
|
|||
|
||||
|
||||
%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
|
||||
- Re-add omitted %%{_includedir}
|
||||
|
||||
|
|
Loading…
Reference in a new issue