On 18 September 2013 08:06, Jan Kiszka <jan.kis...@web.de> wrote:
> On 2013-09-17 23:24, Peter Maydell wrote:
>> On 17 September 2013 18:03, Stefan Weil <s...@weilnetz.de> wrote:
>>> could you please review this patch which removes code added by you earlier?
>>> I have run tests with the old code and assertions to see whether the values
>>> were really smashed. They never were, and from the documentation of setjmp
>>> I'd not expect that they ever might be.
>>
>> We had a discussion about this back in 2011. Any compiler which needs
>> these statements is definitely buggy -- the C standard mandates that
>> they're not needed.
>
> I'm not that sure about this. We have a no-return function involved
> between setjmp and the actual longjmp. Why should the compiler have to
> preserve local variables when entering cpu_loop_exit?

Because the C standard specification for setjmp and longjmp
says it must (if they are not changed between the setjmp and
the longjmp call; locals which are changed need not be preserved).
I quoted the relevant section from C99 in the discussion I linked.
And gcc's documentation of the 'noreturn' attribute specifically
says it does not affect the exceptional path where the function
returns via longjmp.

-- PMM

Reply via email to