Update documentation for builtin_setjmp related patterns.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Feb 1998 17:19:13 +0000 (17:19 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Feb 1998 17:19:13 +0000 (17:19 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18029 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/md.texi

index f0c9f39..96968fe 100644 (file)
@@ -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