diff options
author | Richard Henderson <rth@gcc.gnu.org> | 1998-02-16 09:19:13 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-02-16 09:19:13 -0800 |
commit | c30ddbc9da34903179c82e3ff3ddab65cb79e95b (patch) | |
tree | db0aad38a68dff268c591bc7e444a29e1412ec9e /gcc | |
parent | ecf0ad276bebfea8a6b547355956c0e34443cf7b (diff) | |
download | gcc-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.texi | 29 |
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 |