Strange warning (variable might be clobbered by `longjmp' or

Jim Wilson wilson@chestnut.cygnus.com
Tue Sep 2 15:24:00 GMT 1997


	I'm confused.  Why aren't setjmp and longjmp two different RTL patterns?

I don't understand what the RTL is doing, so it is difficult for me to
describe what is going on.

However, I can point out that there is no RTL for setjmp or longjmp.  There
are just relatively normal looking move insns which implement the functionality
of setjmp/longjmp.  Unfortunately, this is done in a somewhat confusing way.
It appears that the sequences for setjmp/longjmp are setting a pseudo to
0/1, and then branching to the same place which then branches off to the
handler if this pseudo is 1.  This just confuses the control flow.  I have
no idea why it is doing this, or whether my understanding is correct.

Jim



More information about the Gcc mailing list