summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-03-05 18:55:38 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-03-05 18:55:38 +0000
commitf27217ffaff36ec12419e86713ee534c374bf2c5 (patch)
treeaf315f3b29171138b0dff4c653bb35258f76a259 /clang/lib
parent7f4a52eaee2e97d55664e07c1d9a76797e512ba9 (diff)
downloadbcm5719-llvm-f27217ffaff36ec12419e86713ee534c374bf2c5.tar.gz
bcm5719-llvm-f27217ffaff36ec12419e86713ee534c374bf2c5.zip
AST: Remove layering violation with Sema
Scope lives in Sema and cannot be used in AST. Shuffle things around. llvm-svn: 202993
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/ItaniumCXXABI.cpp4
-rw-r--r--clang/lib/AST/MicrosoftCXXABI.cpp10
-rw-r--r--clang/lib/Sema/SemaDecl.cpp12
3 files changed, 16 insertions, 10 deletions
diff --git a/clang/lib/AST/ItaniumCXXABI.cpp b/clang/lib/AST/ItaniumCXXABI.cpp
index f0d20c36968..e1bc0da83bb 100644
--- a/clang/lib/AST/ItaniumCXXABI.cpp
+++ b/clang/lib/AST/ItaniumCXXABI.cpp
@@ -37,11 +37,11 @@ class ItaniumNumberingContext : public MangleNumberingContext {
public:
/// Variable decls are numbered by identifier.
- virtual unsigned getManglingNumber(const VarDecl *VD, Scope *) {
+ virtual unsigned getManglingNumber(const VarDecl *VD, unsigned) {
return ++VarManglingNumbers[VD->getIdentifier()];
}
- virtual unsigned getManglingNumber(const TagDecl *TD, Scope *) {
+ virtual unsigned getManglingNumber(const TagDecl *TD, unsigned) {
return ++TagManglingNumbers[TD->getIdentifier()];
}
};
diff --git a/clang/lib/AST/MicrosoftCXXABI.cpp b/clang/lib/AST/MicrosoftCXXABI.cpp
index f2fd848d264..9ee0321b0b3 100644
--- a/clang/lib/AST/MicrosoftCXXABI.cpp
+++ b/clang/lib/AST/MicrosoftCXXABI.cpp
@@ -29,12 +29,14 @@ namespace {
/// Typically these are things like static locals, lambdas, or blocks.
class MicrosoftNumberingContext : public MangleNumberingContext {
public:
- virtual unsigned getManglingNumber(const VarDecl *VD, Scope *S) {
- return S->getMSLocalManglingNumber();
+ virtual unsigned getManglingNumber(const VarDecl *VD,
+ unsigned MSLocalManglingNumber) {
+ return MSLocalManglingNumber;
}
- virtual unsigned getManglingNumber(const TagDecl *TD, Scope *S) {
- return S->getMSLocalManglingNumber();
+ virtual unsigned getManglingNumber(const TagDecl *TD,
+ unsigned MSLocalManglingNumber) {
+ return MSLocalManglingNumber;
}
};
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 71a79b22616..9870ab1e542 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -3168,7 +3168,8 @@ static void HandleTagNumbering(Sema &S, const TagDecl *Tag, Scope *TagScope) {
return;
MangleNumberingContext &MCtx =
S.Context.getManglingNumberContext(Tag->getParent());
- S.Context.setManglingNumber(Tag, MCtx.getManglingNumber(Tag, TagScope));
+ S.Context.setManglingNumber(
+ Tag, MCtx.getManglingNumber(Tag, TagScope->getMSLocalManglingNumber()));
return;
}
@@ -3177,7 +3178,9 @@ static void HandleTagNumbering(Sema &S, const TagDecl *Tag, Scope *TagScope) {
if (MangleNumberingContext *MCtx =
S.getCurrentMangleNumberContext(Tag->getDeclContext(),
ManglingContextDecl)) {
- S.Context.setManglingNumber(Tag, MCtx->getManglingNumber(Tag, TagScope));
+ S.Context.setManglingNumber(
+ Tag,
+ MCtx->getManglingNumber(Tag, TagScope->getMSLocalManglingNumber()));
}
}
@@ -3816,7 +3819,7 @@ Decl *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS,
if (MangleNumberingContext *MCtx =
getCurrentMangleNumberContext(NewVD->getDeclContext(),
ManglingContextDecl)) {
- Context.setManglingNumber(NewVD, MCtx->getManglingNumber(NewVD, S));
+ Context.setManglingNumber(NewVD, MCtx->getManglingNumber(NewVD, S->getMSLocalManglingNumber()));
Context.setStaticLocalNumber(NewVD, MCtx->getStaticLocalNumber(NewVD));
}
}
@@ -5482,7 +5485,8 @@ Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC,
if (MangleNumberingContext *MCtx =
getCurrentMangleNumberContext(NewVD->getDeclContext(),
ManglingContextDecl)) {
- Context.setManglingNumber(NewVD, MCtx->getManglingNumber(NewVD, S));
+ Context.setManglingNumber(
+ NewVD, MCtx->getManglingNumber(NewVD, S->getMSLocalManglingNumber()));
Context.setStaticLocalNumber(NewVD, MCtx->getStaticLocalNumber(NewVD));
}
}
OpenPOWER on IntegriCloud