https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118940
--- Comment #10 from Miao Wang <shankerwangmiao at gmail dot com> ---
(In reply to Hongtao Liu from comment #9)
> >
> > > Because I think the operands usage is broken.
> >
> > Additionally, by removing the do{ ... } while(0) wrap from
> > bigint_test_exec(), the issue disappears. I believe that if it is the
> > operands usage issue, the result should be the same no matter whether it is
> > wrapped in a do{ ... } while(0).
>
> I think it just happened to hit the RA limitation, and it doesn't look like
> a performance/functionality regression either.
But why the code compiles after removing the wrapping do {...} while(0)? I
believe the functionality of the code remains equivalent, so why it does not
hit the RA limitation without do {...} while(0), but hits with it?