https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119961

--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #8)
> No this is the same problem as PR 116600. Just the ICE shows up.

What is happening is shrink wrapping is moving the restore to the edge of the
basic block containing the asm goto.

That is we start with:
```
asm goto("":::"l1");
l1:
```

So there is only one edge from bbN to bbM.
But shrink wrapping adds the restore on the edge there and splits it but messes
up because now it is:
```
asm goto("":::"l1");
restore
l1:
```

But that is wrong.
The ICE in maybe_record_trace_start is trying to detect that the restores are
done correctly.

PR 116600 is exactly the same situtation as the above case.

Reply via email to