https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105756
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-12 branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>: https://gcc.gnu.org/g:47ea22015c90df31eae763c6c9e3e4b1fb801c3a commit r12-8472-g47ea22015c90df31eae763c6c9e3e4b1fb801c3a Author: Patrick Palka <ppa...@redhat.com> Date: Fri Jun 3 14:58:22 2022 -0400 c++: value-dep but not type-dep decltype expr [PR105756] Here during ahead of time instantiation of the value-dependent but not type-dependent decltype expression (5 % N) == 0, cp_build_binary_op folds the operands of the == via cp_fully_fold, which performs speculative constexpr evaluation, and from which we crash for (5 % N) due to the value-dependence. Since the operand folding performed by cp_build_binary_op appears to be solely for sake of diagnosing overflow, and since these diagnostics are suppressed when in an unevaluated context, this patch avoids this crash by suppressing cp_build_binary_op's operand folding accordingly. PR c++/105756 gcc/cp/ChangeLog: * typeck.cc (cp_build_binary_op): Don't fold operands when c_inhibit_evaluation_warnings. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/decltype82.C: New test. (cherry picked from commit 0ecb6b906f215ec56df1a555139abe9ad95414fb)