https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119961
--- Comment #10 from chenglulu <chenglulu at loongson dot cn> --- (In reply to Andrew Pinski from comment #9) > (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. I agree, it's really the same issue