[cfe-commits] r108807 - in /cfe/trunk: include/clang/AST/ lib/AST/ lib/CodeGen/ lib/Frontend/ lib/Rewrite/ lib/Sema/

Sean Hunt rideau3 at gmail.com
Mon Jul 19 23:19:49 PDT 2010


On 07/19/2010 10:20 PM, Sebastian Redl wrote:
> Author: cornedbee
> Date: Mon Jul 19 23:20:21 2010
> New Revision: 108807
>
> URL: http://llvm.org/viewvc/llvm-project?rev=108807&view=rev
> Log:
> Update ImplicitCastExpr to be able to represent an XValue.
>
> Modified:
>      cfe/trunk/include/clang/AST/Expr.h
>      cfe/trunk/lib/AST/ASTImporter.cpp
>      cfe/trunk/lib/AST/Expr.cpp
>      cfe/trunk/lib/AST/ExprClassification.cpp
>      cfe/trunk/lib/AST/StmtDumper.cpp
>      cfe/trunk/lib/AST/StmtProfile.cpp
>      cfe/trunk/lib/CodeGen/CGExprScalar.cpp
>      cfe/trunk/lib/CodeGen/CGObjC.cpp
>      cfe/trunk/lib/Frontend/PCHReaderStmt.cpp
>      cfe/trunk/lib/Frontend/PCHWriterStmt.cpp
>      cfe/trunk/lib/Rewrite/RewriteObjC.cpp
>      cfe/trunk/lib/Sema/Sema.cpp
>      cfe/trunk/lib/Sema/Sema.h
>      cfe/trunk/lib/Sema/SemaDecl.cpp
>      cfe/trunk/lib/Sema/SemaDeclCXX.cpp
>      cfe/trunk/lib/Sema/SemaExpr.cpp
>      cfe/trunk/lib/Sema/SemaExprCXX.cpp
>      cfe/trunk/lib/Sema/SemaInit.cpp
>      cfe/trunk/lib/Sema/SemaInit.h
>      cfe/trunk/lib/Sema/SemaOverload.cpp
>      cfe/trunk/lib/Sema/SemaTemplate.cpp
>
> Modified: cfe/trunk/include/clang/AST/Expr.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Expr.h?rev=108807&r1=108806&r2=108807&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Expr.h (original)
> +++ cfe/trunk/include/clang/AST/Expr.h Mon Jul 19 23:20:21 2010
> @@ -258,7 +258,6 @@
>     ///   function returning an rvalue reference.
>     /// lvalues and xvalues are collectively referred to as glvalues, while
>     /// prvalues and xvalues together form rvalues.
> -  /// If a
>     Classification Classify(ASTContext&Ctx) const {
>       return ClassifyImpl(Ctx, 0);
>     }
> @@ -2045,24 +2044,33 @@
>   ///
>   /// In C, implicit casts always produce rvalues. However, in C++, an
>   /// implicit cast whose result is being bound to a reference will be
> -/// an lvalue. For example:
> +/// an lvalue or xvalue. For example:

Should this say glvalue?

>   /// }
>   /// @endcode
>   class ImplicitCastExpr : public CastExpr {
> -  /// LvalueCast - Whether this cast produces an lvalue.
> -  bool LvalueCast;
> +public:
> +  enum ResultCategory {
> +    RValue, LValue, XValue
> +  };

Why not PRValue?

Sean



More information about the cfe-commits mailing list