diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-01-18 18:53:16 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-01-18 18:53:16 +0000 |
commit | cd965b97cfac7b7a53a835810ec2bc2ac7a9dd1a (patch) | |
tree | b0877cb15978c0240797b11024005e522b665bd3 /Driver/PrintParserCallbacks.cpp | |
parent | f512e82f56671b695a32d019103e62a302838b7e (diff) |
Convert a few expression actions to smart pointers.
These actions are extremely widely used (identifier expressions and literals); still no performance regression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62468 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/PrintParserCallbacks.cpp')
-rw-r--r-- | Driver/PrintParserCallbacks.cpp | 63 |
1 files changed, 40 insertions, 23 deletions
diff --git a/Driver/PrintParserCallbacks.cpp b/Driver/PrintParserCallbacks.cpp index efde399fba..18a4a24c80 100644 --- a/Driver/PrintParserCallbacks.cpp +++ b/Driver/PrintParserCallbacks.cpp @@ -438,49 +438,66 @@ namespace { //===--------------------------------------------------------------------===// // Expression Parsing Callbacks. //===--------------------------------------------------------------------===// - + // Primary Expressions. - + /// ActOnIdentifierExpr - Parse an identifier in expression context. /// 'HasTrailingLParen' indicates whether or not the identifier has a '(' /// token immediately after it. - virtual ExprResult ActOnIdentifierExpr(Scope *S, SourceLocation Loc, - IdentifierInfo &II, - bool HasTrailingLParen, - const CXXScopeSpec *SS) { + virtual OwningExprResult ActOnIdentifierExpr(Scope *S, SourceLocation Loc, + IdentifierInfo &II, + bool HasTrailingLParen, + const CXXScopeSpec *SS) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return ExprEmpty(); } - - virtual ExprResult ActOnPredefinedExpr(SourceLocation Loc, - tok::TokenKind Kind) { + + virtual OwningExprResult ActOnCXXOperatorFunctionIdExpr( + Scope *S, SourceLocation OperatorLoc, + OverloadedOperatorKind Op, + bool HasTrailingLParen, const CXXScopeSpec &SS) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return ExprEmpty(); } - virtual ExprResult ActOnCharacterConstant(const Token &) { + virtual OwningExprResult ActOnCXXConversionFunctionExpr( + Scope *S, SourceLocation OperatorLoc, + TypeTy *Type, bool HasTrailingLParen, + const CXXScopeSpec &SS) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return ExprEmpty(); } - virtual ExprResult ActOnNumericConstant(const Token &) { + virtual OwningExprResult ActOnPredefinedExpr(SourceLocation Loc, + tok::TokenKind Kind) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return ExprEmpty(); } - + + virtual OwningExprResult ActOnCharacterConstant(const Token &) { + llvm::cout << __FUNCTION__ << "\n"; + return ExprEmpty(); + } + + virtual OwningExprResult ActOnNumericConstant(const Token &) { + llvm::cout << __FUNCTION__ << "\n"; + return ExprEmpty(); + } + /// ActOnStringLiteral - The specified tokens were lexed as pasted string /// fragments (e.g. "foo" "bar" L"baz"). - virtual ExprResult ActOnStringLiteral(const Token *Toks, unsigned NumToks) { + virtual OwningExprResult ActOnStringLiteral(const Token *Toks, + unsigned NumToks) { llvm::cout << __FUNCTION__ << "\n"; - return 0; + return ExprEmpty(); } - - virtual ExprResult ActOnParenExpr(SourceLocation L, SourceLocation R, - ExprTy *Val) { + + virtual OwningExprResult ActOnParenExpr(SourceLocation L, SourceLocation R, + ExprArg Val) { llvm::cout << __FUNCTION__ << "\n"; - return Val; // Default impl returns operand. + return move_res(Val); // Default impl returns operand. } - + // Postfix Expressions. virtual ExprResult ActOnPostfixUnaryOp(Scope *S, SourceLocation OpLoc, tok::TokenKind Kind, ExprTy *Input) { |