Revert rL360499 and rL360464 from cfe/trunk:
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 11 May 2019 20:21:59 +0000 (20:21 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 11 May 2019 20:21:59 +0000 (20:21 +0000)
commit73e8b6743820ff83bb07f565f7f22a575e1e38fe
tree36c72833a4cc6cc34bb1ad111727e3925212c03c
parent91e697c145a0c132e00e275d0c951b30927d4d3e
Revert rL360499 and rL360464 from cfe/trunk:
Reject attempts to call non-static member functions on objects outside
their lifetime in constant expressions.

This is undefined behavior per [class.cdtor]p2.

We continue to allow this for objects whose values are not visible
within the constant evaluation, because there's no way we can tell
whether the access is defined or not, existing code relies on the
ability to make such calls, and every other compiler allows such
calls.
........
Fix handling of objects under construction during constant expression
evaluation.

It's not enough to just track the LValueBase that we're evaluating, we
need to also track the path to the objects whose constructors are
running.
........
Fixes windows buildbots

llvm-svn: 360531
clang/include/clang/AST/APValue.h
clang/include/clang/Basic/DiagnosticASTKinds.td
clang/lib/AST/APValue.cpp
clang/lib/AST/ExprConstant.cpp
clang/test/CXX/expr/expr.const/p2-0x.cpp
clang/test/SemaCXX/constant-expression-cxx11.cpp
clang/test/SemaCXX/constant-expression-cxx1y.cpp