aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-11-19 10:32:38 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-11-19 10:32:38 +0000
commit06550395dd70d0c65a1d8dbb8a9639262f158414 (patch)
tree97c50c4773e6e6c3e6f3ef2dc058bb086b0c6785
parented3849b456d64d124bddc7ac044f3ce590bd9d69 (diff)
Fix silly code, use IdentifierInfo* instead of std::string in
PragmaPackStack. Thanks Chris! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59616 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/Sema.h11
-rw-r--r--lib/Sema/SemaDecl.cpp2
2 files changed, 6 insertions, 7 deletions
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 7890070945..29994d41c3 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -71,12 +71,13 @@ namespace clang {
/// PragmaPackStack - Simple class to wrap the stack used by #pragma
/// pack.
class PragmaPackStack {
- typedef std::vector< std::pair<unsigned, std::string> > stack_ty;
+ typedef std::vector< std::pair<unsigned, IdentifierInfo*> > stack_ty;
/// Alignment - The current user specified alignment.
unsigned Alignment;
- /// Stack - Entries in the #pragma pack stack.
+ /// Stack - Entries in the #pragma pack stack, consisting of saved
+ /// alignments and optional names.
stack_ty Stack;
public:
@@ -86,11 +87,9 @@ public:
unsigned getAlignment() { return Alignment; }
/// push - Push the current alignment onto the stack, optionally
- /// using the given \arg Name for the record, if non-zero,
+ /// using the given \arg Name for the record, if non-zero.
void push(IdentifierInfo *Name) {
- // FIXME: Why does this push 'Name' as an std::string??
- Stack.push_back(std::make_pair(Alignment,
- std::string(Name ? Name->getName() : "")));
+ Stack.push_back(std::make_pair(Alignment, Name));
}
/// pop - Pop a record from the stack and restore the current
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index f9d946e546..d6d9845af7 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -3197,7 +3197,7 @@ bool PragmaPackStack::pop(IdentifierInfo *Name) {
// Otherwise, find the named record.
for (unsigned i = Stack.size(); i != 0; ) {
--i;
- if (Name->isName(Stack[i].second.c_str())) {
+ if (Stack[i].second == Name) {
// Found it, pop up to and including this record.
Alignment = Stack[i].first;
Stack.erase(Stack.begin() + i, Stack.end());