[Bug rtl-optimization/33356] New: Incomplete documentation of REG_RETVAL and REG_LIBCALL notes

steven at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Sep 8 19:15:00 GMT 2007


The documentation of REG_RETVAL and REG_LIBCALL notes is incomplete.  The
following additional information should be added to doc/rtl.texi:

1. LIBCALL and RETVAL notes always appear in pairs.
2. Operand 0 the libcall reg note always points to the other note of the pair.
3. Nested pairs of libcall notes are not allowed.

Nested libcalls are not allowed, but there is one pass that is prepared to
handle them anyway, and that is the local const/copy propagation pass in
gcse.c.  A patch for that is attached to Bug 33029
(http://gcc.gnu.org/bugzilla/attachment.cgi?id=14064).

A patch for the documentation is pasted below:

Index: doc/rtl.texi
===================================================================
--- doc/rtl.texi        (revision 128277)
+++ doc/rtl.texi        (working copy)
@@ -3640,13 +3640,16 @@ library call), and @var{op} is the first
 library call, the first insn that was generated to set up the arguments
 for the library call).

-Loop optimization uses this note to treat such a sequence as a single
-operation for code motion purposes and flow analysis uses this note to
-delete such sequences whose results are dead.
+The RTL dead code elimination pass uses this note to delete such
+sequences whose results are dead.

 A @code{REG_EQUAL} note will also usually be attached to this insn to
 provide the expression being computed by the sequence.

+A @code{REG_RETVAL} note always appears in pair with a @code{REG_LIBCALL}
+note.  The first operand of the @code{REG_RETVAL} note is a pointer to
+the @code{REG_LIBCALL} note of the pair.
+
 These notes will be deleted after reload, since they are no longer
 accurate or useful.

@@ -3655,6 +3658,10 @@ accurate or useful.
 This is the inverse of @code{REG_RETVAL}: it is placed on the first
 insn of a multi-insn sequence, and it points to the last one.

+A @code{REG_LIBCALL} note always appears in pair with a @code{REG_LIBCALL}
+note.  The first operand of the @code{REG_LIBCALL} note is a pointer to
+the @code{REG_RETVAL} note of the pair.
+
 These notes are deleted after reload, since they are no longer useful or
 accurate.


-- 
           Summary: Incomplete documentation of REG_RETVAL and REG_LIBCALL
                    notes
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: documentation
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: steven at gcc dot gnu dot org
 BugsThisDependsOn: 33029


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33356



More information about the Gcc-bugs mailing list