On 2021-03-22 6:22 a.m., Richard Sandiford wrote:
'\0' is just a normal string null terminator and so I don't think we should be processing it as if it were a constraint character. How about having a gcc_unreachable on zero instead?
I would be nice to use gcc_unreachable but it requires to rewrite some loops working on constraints. All the loops check 0 explicitly to stop cycling, some of them still use CONSTRAIN_LEN for 0, e.g. code taken from reload.c:
switch ((c = *p, len = CONSTRAINT_LEN (c, p)), c) { case '\0': len = 0; break; ... I think we could wait stage 1 to do this.