Hi Edwin,

> flow.c: In function `doCatch':
> flow.c:1351: warning: argument `x' might be clobbered by `longjmp' or `vfork'

This message is familiar to me, both when we used OpenBSD at a
customer's site, and for some older versions of Linux (i.e. an older
'gcc').

I investigated it deeper at that time, and came to the conclusion that
it is not critical (at least I never observed any problems ;)

The reason must have to do how the compiler saves the environment,
including the state of local variables like 'x', and how the code
resumes when a longjmp() is executed. For me, it is a bug in the
compiler, as it is its duty to properly save and restored its stuff.

IIRC, the warning disappears when 'x' is declared as a volatile
variable, but I don't know if that has any adverse side effects then.
Still the question remains why the compiler, after it detects that the
variable might be "clobbered", it doesn't take appropriate measures by
itself.

The best solution is to use a more up-to-date version of 'gcc', or -
even better - use the 64-bit version which avoids 'C' :-)

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=unsubscribe

Reply via email to