Calculate the value kind of an expression when it's created and
store it on the expression node.  Also store an "object kind",
which distinguishes ordinary "addressed" l-values (like
variable references and pointer dereferences) and bitfield,
@property, and vector-component l-values.

Currently we're not using these for much, but I aim to switch
pretty much everything calculating l-valueness over to them.
For now they shouldn't necessarily be trusted.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119685 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/ExprClassification.cpp b/lib/AST/ExprClassification.cpp
index 60fbfd2..4677910 100644
--- a/lib/AST/ExprClassification.cpp
+++ b/lib/AST/ExprClassification.cpp
@@ -292,9 +292,7 @@
   }
       
   case Expr::CXXUuidofExprClass:
-    // Assume that Microsoft's __uuidof returns an lvalue, like typeid does.
-    // FIXME: Is this really the case?
-    return Cl::CL_LValue;
+    return Cl::CL_PRValue;
   }
   
   llvm_unreachable("unhandled expression kind in classification");