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