From c30ddbc9da34903179c82e3ff3ddab65cb79e95b Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 16 Feb 1998 09:19:13 -0800 Subject: [PATCH] Update documentation for builtin_setjmp related patterns. From-SVN: r18029 --- gcc/md.texi | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/gcc/md.texi b/gcc/md.texi index f0c9f394eb9..96968fee4cc 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 -- 2.30.2