> -----Original Message----- > From: Richard Henderson <richard.hender...@linaro.org> > Sent: Monday, March 15, 2021 8:32 AM > To: Taylor Simpson <tsimp...@quicinc.com>; qemu-devel@nongnu.org > Cc: phi...@redhat.com; alex.ben...@linaro.org; laur...@vivier.eu; > a...@rev.ng; Brian Cain <bc...@quicinc.com> > Subject: Re: [PATCH v8 29/35] Hexagon (target/hexagon) translation > > On 3/14/21 9:06 PM, Taylor Simpson wrote: > >> Yes, but DISAS_NORETURN still means we've already exited. > >> > >> Just like calling abort() in C means that we won't reach any following > >> return statement. > > > > Then I'm missing something because the code emitted here does get executed. > > You really are missing the point. > > The code emitted here, for the NORETURN case, gets executed? How do you know?
I can see the side effects. For example, there is a call to gen_exec_counters(ctx), and I can see the counters being updated. > And if so, then *something* is returning when it shouldn't. > > The stop hook is for the use of all of the *other* DISAS_* codes, for which > we have not yet exited. > > There should be *nothing* to be done for NORETURN. We have longjmp'ed > away to the main loop already. Anything that needed to be done must have been > done before that point. OK - I'll make sure everything is done during the packet generation and nothing is done during tb_stop. Thanks, Taylor