aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>1998-02-16 09:19:13 -0800
committerRichard Henderson <rth@gcc.gnu.org>1998-02-16 09:19:13 -0800
commitc30ddbc9da34903179c82e3ff3ddab65cb79e95b (patch)
treedb0aad38a68dff268c591bc7e444a29e1412ec9e /gcc
parentecf0ad276bebfea8a6b547355956c0e34443cf7b (diff)
downloadgcc-c30ddbc9da34903179c82e3ff3ddab65cb79e95b.zip
gcc-c30ddbc9da34903179c82e3ff3ddab65cb79e95b.tar.gz
gcc-c30ddbc9da34903179c82e3ff3ddab65cb79e95b.tar.bz2
Update documentation for builtin_setjmp related patterns.
From-SVN: r18029
Diffstat (limited to 'gcc')
-rw-r--r--gcc/md.texi29
1 files changed, 25 insertions, 4 deletions
diff --git a/gcc/md.texi b/gcc/md.texi
index f0c9f39..96968fe 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -2462,8 +2462,10 @@ This pattern, if defined, contains code needed at the target of a
nonlocal goto after the code already generated by GNU CC. You will not
normally need to define this pattern. A typical reason why you might
need this pattern is if some value, such as a pointer to a global table,
-must be restored when the frame pointer is restored. There are no
-arguments.
+must be restored when the frame pointer is restored. Note that a nonlocal
+goto only ocurrs within a unit-of-translation, so a global table pointer
+that is shared by all functions of a given module need not be restored.
+There are no arguments.
@cindex @code{exception_receiver} instruction pattern
@item @samp{exception_receiver}
@@ -2474,14 +2476,33 @@ might need this pattern is if some value, such as a pointer to a global
table, must be restored after control flow is branched to the handler of
an exception. There are no arguments.
+@cindex @code{builtin_setjmp_setup} instruction pattern
+@item @samp{builtin_setjmp_setup}
+This pattern, if defined, contains additional code needed to initialize
+the @code{jmp_buf}. You will not normally need to define this pattern.
+A typical reason why you might need this pattern is if some value, such
+as a pointer to a global table, must be restored. Though it is
+preferred that the pointer value be recalculated if possible (given the
+address of a label for instance). The single argument is a pointer to
+the @code{jmp_buf}. Note that the buffer is five words long and that
+the first three are normally used by the generic mechanism.
+
@cindex @code{builtin_setjmp_receiver} instruction pattern
@item @samp{builtin_setjmp_receiver}
This pattern, if defined, contains code needed at the site of an
builtin setjmp that isn't needed at the site of a nonlocal goto. You
will not normally need to define this pattern. A typical reason why you
might need this pattern is if some value, such as a pointer to a global
-table, must be restored. This pattern is called immediate after the
-call to @code{__dummy} has been emitted. There are no arguments.
+table, must be restored. It takes one argument, which is the label
+to which builtin_longjmp transfered control; this pattern may be emitted
+at a small offset from that label.
+
+@cindex @code{builtin_longjmp} instruction pattern
+@item @samp{builtin_longjmp}
+This pattern, if defined, performs the entire action of the longjmp.
+You will not normally need to define this pattern unless you also define
+@code{builtin_setjmp_setup}. The single argument is a pointer to the
+@code{jmp_buf}.
@end table
@node Pattern Ordering