https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87757
--- Comment #4 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Aldy: do you remember why the arguments need to have the same location as the call itself? The first case works because during gimplify_arg it's wrapped in a NOP_EXPR which is casting from char[] to char *, and it's this NOP_EXPR which gets its location modified. The second case doesn't have the NOP_EXPR.