diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-05-27 02:25:27 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-05-27 02:25:27 +0000 |
commit | 4dbe15d437808d48ec1b5147e9d332f82b800460 (patch) | |
tree | bfb78e167f688fb156158eb245b9aca22f747a78 /clang/lib/Sema/SemaAttr.cpp | |
parent | 1cfca7292a0b730e7aa39da24992ec0311b90490 (diff) | |
download | bcm5719-llvm-4dbe15d437808d48ec1b5147e9d332f82b800460.tar.gz bcm5719-llvm-4dbe15d437808d48ec1b5147e9d332f82b800460.zip |
Sema: Factor out struct for alignment stack entries.
llvm-svn: 104799
Diffstat (limited to 'clang/lib/Sema/SemaAttr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaAttr.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaAttr.cpp b/clang/lib/Sema/SemaAttr.cpp index ee6aef06299..2075f9aa935 100644 --- a/clang/lib/Sema/SemaAttr.cpp +++ b/clang/lib/Sema/SemaAttr.cpp @@ -24,10 +24,15 @@ using namespace clang; //===----------------------------------------------------------------------===// namespace { + struct PackStackEntry { + unsigned Alignment; + IdentifierInfo *Name; + }; + /// PragmaPackStack - Simple class to wrap the stack used by #pragma /// pack. class PragmaPackStack { - typedef std::vector< std::pair<unsigned, IdentifierInfo*> > stack_ty; + typedef std::vector<PackStackEntry> stack_ty; /// Alignment - The current user specified alignment. unsigned Alignment; @@ -45,7 +50,8 @@ namespace { /// push - Push the current alignment onto the stack, optionally /// using the given \arg Name for the record, if non-zero. void push(IdentifierInfo *Name) { - Stack.push_back(std::make_pair(Alignment, Name)); + PackStackEntry PSE = { Alignment, Name }; + Stack.push_back(PSE); } /// pop - Pop a record from the stack and restore the current @@ -62,7 +68,7 @@ bool PragmaPackStack::pop(IdentifierInfo *Name) { // If name is empty just pop top. if (!Name) { - Alignment = Stack.back().first; + Alignment = Stack.back().Alignment; Stack.pop_back(); return true; } @@ -70,9 +76,9 @@ bool PragmaPackStack::pop(IdentifierInfo *Name) { // Otherwise, find the named record. for (unsigned i = Stack.size(); i != 0; ) { --i; - if (Stack[i].second == Name) { + if (Stack[i].Name == Name) { // Found it, pop up to and including this record. - Alignment = Stack[i].first; + Alignment = Stack[i].Alignment; Stack.erase(Stack.begin() + i, Stack.end()); return true; } |