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

Reply via email to