https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68847
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> --- We ICE since the C++ delayed folding merge, because build_cxx_call now does this for every argument of a built-in function: 7743 /* We need to take care that values to BUILT_IN_NORMAL 7744 are reduced. */ 7745 for (i = 0; i < nargs; i++) 7746 argarray[i] = maybe_constant_value (argarray[i]); maybe_constant_value eventually leads to cxx_eval_constant_expression, but that function doesn't handle IMPLICIT_CONV_EXPR. I suppose it should, but the question is whether to handle IMPLICIT_CONV_EXPR same as e.g. CONVERT_EXPR (Honza's patch), or rather like MODOP_EXPR (~ treat the expression as non-constant). Both approaches fix the testcase and pass dg.exp. Jason, would you have some advice? (Also I wonder whether cxx_eval_constant_expression should handle e.g. CAST_EXPR etc., or whether these expressions should never have gotten into cxx_eval_constant_expression.)