]> granicus.if.org Git - clang/commitdiff
Fix silly code, use IdentifierInfo* instead of std::string in
authorDaniel Dunbar <daniel@zuster.org>
Wed, 19 Nov 2008 10:32:38 +0000 (10:32 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 19 Nov 2008 10:32:38 +0000 (10:32 +0000)
PragmaPackStack. Thanks Chris!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59616 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/Sema.h
lib/Sema/SemaDecl.cpp

index 7890070945cfba715139543ec6920d93541deab5..29994d41c30ba035be12874d310e57993afda920 100644 (file)
@@ -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
index f9d946e54685299becfa0b68ee350db47b000cb1..d6d9845af79662dbd78778ca4ed2509bead90cf9 100644 (file)
@@ -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());