The real reason for this change is that clang aborts with a fatal
error in backend (http://llvm.org/bugs/show_bug.cgi?id=12226),
but I'm not sure whether this was a correct construct in the first
place anyway. The contents are above 0x7f, which may be outside
the range of plain char, if it is signed, so maybe the result is undefined.
I don't want to spend the time checking in the spec,
but this new variant is technically the same and it is safe.