On Mon, Mar 22, 2021 at 10:28:48AM -0400, Vladimir Makarov wrote:
> 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.
Yes. And such gcc_unreachable should be in as high-level code as
possible, not deep in some macro.
Segher