From 4dbe15d437808d48ec1b5147e9d332f82b800460 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 27 May 2010 02:25:27 +0000 Subject: Sema: Factor out struct for alignment stack entries. llvm-svn: 104799 --- clang/lib/Sema/SemaAttr.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'clang/lib/Sema/SemaAttr.cpp') 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 > stack_ty; + typedef std::vector 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; } -- cgit v1.2.3