Index: clang/lib/AST/Interp/ByteCodeExprGen.cpp =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -1856,6 +1856,9 @@ case UO_Real: // __real x case UO_Imag: // __imag x case UO_Extension: + if (DiscardResult) + return this->discard(SubExpr); + return this->visit(SubExpr); case UO_Coawait: assert(false && "Unhandled opcode"); } Index: clang/test/AST/Interp/literals.cpp =================================================================== --- clang/test/AST/Interp/literals.cpp +++ clang/test/AST/Interp/literals.cpp @@ -782,6 +782,12 @@ namespace PredefinedExprs { constexpr char heh(unsigned index) { +#if __cplusplus >= 201402L + __FUNCTION__; // ref-warning {{result unused}} \ + // expected-warning {{result unused}} + __extension__ __FUNCTION__; // ref-warning {{result unused}} \ + // expected-warning {{result unused}} +#endif return __FUNCTION__[index]; } static_assert(heh(0) == 'h', "");