Index: clang/lib/AST/Interp/ByteCodeExprGen.cpp =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -635,8 +635,9 @@ template bool ByteCodeExprGen::VisitAbstractConditionalOperator( const AbstractConditionalOperator *E) { - return this->visitConditional( - E, [this](const Expr *E) { return this->visit(E); }); + return this->visitConditional(E, [this](const Expr *E) { + return DiscardResult ? this->discard(E) : this->visit(E); + }); } template Index: clang/test/AST/Interp/literals.cpp =================================================================== --- clang/test/AST/Interp/literals.cpp +++ clang/test/AST/Interp/literals.cpp @@ -823,6 +823,9 @@ (void)5, (void)6; + 1 ? 0 : 1; // expected-warning {{unused}} \ + // ref-warning {{unused}} + return 0; }