[PATCH] D74418: [clang] fix error detection in consteval calls
Tyker via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 26 12:10:36 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGca50f09db9f8: [clang] fix error detection in consteval calls (authored by Tyker).
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Changed prior to commit:
https://reviews.llvm.org/D74418?vs=243892&id=246810#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D74418/new/
https://reviews.llvm.org/D74418
Files:
clang/lib/Sema/SemaExpr.cpp
clang/test/SemaCXX/cxx2a-consteval.cpp
Index: clang/test/SemaCXX/cxx2a-consteval.cpp
===================================================================
--- clang/test/SemaCXX/cxx2a-consteval.cpp
+++ clang/test/SemaCXX/cxx2a-consteval.cpp
@@ -309,6 +309,14 @@
namespace alloc {
+consteval int f() {
+ int *A = new int(0);
+// expected-note at -1+ {{allocation performed here was not deallocated}}
+ return *A;
+}
+
+int i1 = f(); // expected-error {{is not a constant expression}}
+
struct A {
int* p = new int(42);
// expected-note at -1+ {{heap allocation performed here}}
Index: clang/lib/Sema/SemaExpr.cpp
===================================================================
--- clang/lib/Sema/SemaExpr.cpp
+++ clang/lib/Sema/SemaExpr.cpp
@@ -15368,8 +15368,9 @@
Expr::EvalResult Eval;
Eval.Diag = &Notes;
ConstantExpr *CE = Candidate.getPointer();
- if (!CE->EvaluateAsConstantExpr(Eval, Expr::EvaluateForCodeGen,
- SemaRef.getASTContext(), true)) {
+ bool Result = CE->EvaluateAsConstantExpr(Eval, Expr::EvaluateForCodeGen,
+ SemaRef.getASTContext(), true);
+ if (!Result || !Notes.empty()) {
Expr *InnerExpr = CE->getSubExpr()->IgnoreImplicit();
FunctionDecl *FD = nullptr;
if (auto *Call = dyn_cast<CallExpr>(InnerExpr))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74418.246810.patch
Type: text/x-patch
Size: 1299 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200226/0ec240d7/attachment.bin>
More information about the cfe-commits
mailing list