https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72766
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- #11 0x0000000000a7d226 in cxx_eval_pointer_plus_expression ( ctx=0x7fffffffd200, t=<integer_cst 0x7ffff69fac60>, lval=false, non_constant_p=0x7fffffffd237, overflow_p=0x7fffffffd236) at /space/rguenther/src/svn/trunk/gcc/cp/constexpr.c:3585 3585 if (!tree_int_cst_le (t, nelts)) (gdb) l 3580 { 3581 tree type = TREE_TYPE (op00); 3582 t = fold_convert_loc (loc, ssizetype, TREE_OPERAND (op00, 1)); 3583 tree nelts = array_type_nelts_top (TREE_TYPE (TREE_OPERAND (op00, 0))); 3584 /* Don't fold an out-of-bound access. */ 3585 if (!tree_int_cst_le (t, nelts)) 3586 return NULL_TREE; 3587 op01 = cp_fold_convert (ssizetype, op01); 3588 /* Don't fold if op01 can't be divided exactly by TYPE_SIZE_UNIT. 3589 constexpr int A[1]; ... (char *)&A[0] + 1 */ (gdb) p t $1 = <integer_cst 0x7ffff69fac60> (gdb) p nelts $2 = <nop_expr 0x7ffff69fdb80>