+2004-09-10 Ziemowit Laski <zlaski@apple.com>
+
+ * decl.c (objc_mark_locals_volatile): Make description of
+ routine more descriptive; only mark VAR_DECLs at each
+ binding level.
+
2004-09-10 Richard Henderson <rth@redhat.com>
PR c++/17386
/* The following routine is used by the NeXT-style SJLJ exceptions;
variables get marked 'volatile' so as to not be clobbered by
- _setjmp()/_longjmp() calls. */
+ _setjmp()/_longjmp() calls. All variables in the current scope,
+ as well as parent scopes up to (but not including) ENCLOSING_BLK
+ shall be thusly marked. */
void
objc_mark_locals_volatile (void *enclosing_blk)
for (decl = scope->names; decl; decl = TREE_CHAIN (decl))
{
- DECL_REGISTER (decl) = 0;
- TREE_THIS_VOLATILE (decl) = 1;
+ if (TREE_CODE (decl) == VAR_DECL)
+ {
+ DECL_REGISTER (decl) = 0;
+ TREE_THIS_VOLATILE (decl) = 1;
+ }
}
}
}