teemperor created this revision.
If we have an xvalue here, we will always hit the
`err_typecheck_invalid_lvalue_addrof` error
in 'Sema::CheckAddressOfOperand' when trying to take the address of the result.
This patch
uses the fallback code path where we store the result in a local variable
instead when we hit
this case.
This fixes rdar://problem/40613277
https://reviews.llvm.org/D48303
Files:
source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
Index: source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
===================================================================
--- source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
+++ source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
@@ -292,8 +292,7 @@
//
// - During dematerialization, $0 is ignored.
- bool is_lvalue = (last_expr->getValueKind() == VK_LValue ||
- last_expr->getValueKind() == VK_XValue) &&
+ bool is_lvalue = (last_expr->getValueKind() == VK_LValue) &&
(last_expr->getObjectKind() == OK_Ordinary);
QualType expr_qual_type = last_expr->getType();
Index: source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
===================================================================
--- source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
+++ source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
@@ -292,8 +292,7 @@
//
// - During dematerialization, $0 is ignored.
- bool is_lvalue = (last_expr->getValueKind() == VK_LValue ||
- last_expr->getValueKind() == VK_XValue) &&
+ bool is_lvalue = (last_expr->getValueKind() == VK_LValue) &&
(last_expr->getObjectKind() == OK_Ordinary);
QualType expr_qual_type = last_expr->getType();
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits