Author: brunoricci Date: Mon Jan 7 05:39:26 2019 New Revision: 350519 URL: http://llvm.org/viewvc/llvm-project?rev=350519&view=rev Log: [AST][NFC] Pack OpaqueValueExpr
Use the newly available space in the bit-fields of Stmt. This saves 1 pointer per OpaqueValueExpr. NFC. Modified: cfe/trunk/include/clang/AST/Expr.h cfe/trunk/include/clang/AST/Stmt.h cfe/trunk/lib/Serialization/ASTReaderStmt.cpp Modified: cfe/trunk/include/clang/AST/Expr.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Expr.h?rev=350519&r1=350518&r2=350519&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/Expr.h (original) +++ cfe/trunk/include/clang/AST/Expr.h Mon Jan 7 05:39:26 2019 @@ -945,7 +945,6 @@ public: class OpaqueValueExpr : public Expr { friend class ASTStmtReader; Expr *SourceExpr; - SourceLocation Loc; public: OpaqueValueExpr(SourceLocation Loc, QualType T, ExprValueKind VK, @@ -959,8 +958,9 @@ public: T->isInstantiationDependentType() || (SourceExpr && SourceExpr->isInstantiationDependent()), false), - SourceExpr(SourceExpr), Loc(Loc) { + SourceExpr(SourceExpr) { setIsUnique(false); + OpaqueValueExprBits.Loc = Loc; } /// Given an expression which invokes a copy constructor --- i.e. a @@ -969,20 +969,19 @@ public: static const OpaqueValueExpr *findInCopyConstruct(const Expr *expr); explicit OpaqueValueExpr(EmptyShell Empty) - : Expr(OpaqueValueExprClass, Empty) { } + : Expr(OpaqueValueExprClass, Empty) {} /// Retrieve the location of this expression. - SourceLocation getLocation() const { return Loc; } + SourceLocation getLocation() const { return OpaqueValueExprBits.Loc; } SourceLocation getBeginLoc() const LLVM_READONLY { - return SourceExpr ? SourceExpr->getBeginLoc() : Loc; + return SourceExpr ? SourceExpr->getBeginLoc() : getLocation(); } SourceLocation getEndLoc() const LLVM_READONLY { - return SourceExpr ? SourceExpr->getEndLoc() : Loc; + return SourceExpr ? SourceExpr->getEndLoc() : getLocation(); } SourceLocation getExprLoc() const LLVM_READONLY { - if (SourceExpr) return SourceExpr->getExprLoc(); - return Loc; + return SourceExpr ? SourceExpr->getExprLoc() : getLocation(); } child_range children() { Modified: cfe/trunk/include/clang/AST/Stmt.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Stmt.h?rev=350519&r1=350518&r2=350519&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/Stmt.h (original) +++ cfe/trunk/include/clang/AST/Stmt.h Mon Jan 7 05:39:26 2019 @@ -706,13 +706,16 @@ protected: //===--- Clang Extensions bitfields classes ---===// class OpaqueValueExprBitfields { + friend class ASTStmtReader; friend class OpaqueValueExpr; unsigned : NumExprBits; - /// The OVE is a unique semantic reference to its source expressio if this + /// The OVE is a unique semantic reference to its source expression if this /// bit is set to true. unsigned IsUnique : 1; + + SourceLocation Loc; }; union { Modified: cfe/trunk/lib/Serialization/ASTReaderStmt.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderStmt.cpp?rev=350519&r1=350518&r2=350519&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTReaderStmt.cpp (original) +++ cfe/trunk/lib/Serialization/ASTReaderStmt.cpp Mon Jan 7 05:39:26 2019 @@ -1773,7 +1773,7 @@ void ASTStmtReader::VisitCXXFoldExpr(CXX void ASTStmtReader::VisitOpaqueValueExpr(OpaqueValueExpr *E) { VisitExpr(E); E->SourceExpr = Record.readSubExpr(); - E->Loc = ReadSourceLocation(); + E->OpaqueValueExprBits.Loc = ReadSourceLocation(); E->setIsUnique(Record.readInt()); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits