summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-05-01 21:29:53 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-05-01 21:29:53 +0000
commit0e439960b816e1721fecf32bca8a1c8f9e1f2b0b (patch)
tree479492832400601c939d734949481b0d44f5bb6f /clang/lib/Serialization
parent56b579a3735c944580b3adca99b52d907cccfc9b (diff)
downloadbcm5719-llvm-0e439960b816e1721fecf32bca8a1c8f9e1f2b0b.tar.gz
bcm5719-llvm-0e439960b816e1721fecf32bca8a1c8f9e1f2b0b.zip
Move the state bits in DeclRefExpr out of the pointer union and into
a bitfield in the base class. DREs weren't using any bits here past the normal Expr bits, so we have plenty of room. This makes the common case of getting a Decl out of a DRE no longer need to do any masking etc. Also, while here, clean up code to use the accessor methods rather than directly poking these bits, and provide a nice comment for DREs that includes the information previously attached to the bits going into the pointer union. No functionality changed here, but DREs should be a tad faster now. llvm-svn: 130666
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r--clang/lib/Serialization/ASTReaderStmt.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp
index 83b3907f581..f0b5abaf3bf 100644
--- a/clang/lib/Serialization/ASTReaderStmt.cpp
+++ b/clang/lib/Serialization/ASTReaderStmt.cpp
@@ -425,21 +425,17 @@ void ASTStmtReader::VisitPredefinedExpr(PredefinedExpr *E) {
void ASTStmtReader::VisitDeclRefExpr(DeclRefExpr *E) {
VisitExpr(E);
- bool HasQualifier = Record[Idx++];
- bool HasExplicitTemplateArgs = Record[Idx++];
+ E->DeclRefExprBits.HasQualifier = Record[Idx++];
+ E->DeclRefExprBits.HasExplicitTemplateArgs = Record[Idx++];
unsigned NumTemplateArgs = 0;
- if (HasExplicitTemplateArgs)
+ if (E->hasExplicitTemplateArgs())
NumTemplateArgs = Record[Idx++];
- E->DecoratedD.setInt((HasQualifier? DeclRefExpr::HasQualifierFlag : 0) |
- (HasExplicitTemplateArgs
- ? DeclRefExpr::HasExplicitTemplateArgumentListFlag : 0));
-
- if (HasQualifier)
+ if (E->hasQualifier())
E->getNameQualifier()->QualifierLoc
= Reader.ReadNestedNameSpecifierLoc(F, Record, Idx);
- if (HasExplicitTemplateArgs)
+ if (E->hasExplicitTemplateArgs())
ReadExplicitTemplateArgumentList(E->getExplicitTemplateArgs(),
NumTemplateArgs);
OpenPOWER on IntegriCloud