diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-03-05 18:55:38 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-03-05 18:55:38 +0000 |
commit | f27217ffaff36ec12419e86713ee534c374bf2c5 (patch) | |
tree | af315f3b29171138b0dff4c653bb35258f76a259 /clang/lib | |
parent | 7f4a52eaee2e97d55664e07c1d9a76797e512ba9 (diff) | |
download | bcm5719-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.cpp | 4 | ||||
-rw-r--r-- | clang/lib/AST/MicrosoftCXXABI.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 12 |
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)); } } |