forked from OSchip/llvm-project
Fix silly code, use IdentifierInfo* instead of std::string in
PragmaPackStack. Thanks Chris! llvm-svn: 59616
This commit is contained in:
parent
9b1335eca8
commit
af7efa695c
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue