diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index b2663714340b9..51115907629d6 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -3416,6 +3416,9 @@ bool Compiler::VisitCXXDeleteExpr(const CXXDeleteExpr *E) { template bool Compiler::VisitBlockExpr(const BlockExpr *E) { + if (DiscardResult) + return true; + const Function *Func = nullptr; if (auto F = Compiler(Ctx, P).compileObjCBlock(E)) Func = F; diff --git a/clang/test/SemaCXX/block-packs.cpp b/clang/test/SemaCXX/block-packs.cpp index 4f3d68a727b7c..8f63c98fa2745 100644 --- a/clang/test/SemaCXX/block-packs.cpp +++ b/clang/test/SemaCXX/block-packs.cpp @@ -1,6 +1,9 @@ // RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused %s // RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused %s -frecovery-ast -frecovery-ast-type +// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused -fexperimental-new-constant-interpreter %s +// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused -frecovery-ast -frecovery-ast-type -fexperimental-new-constant-interpreter %s + template void f() { ((^ { Ts t; }), ...);