Deleted Added
full compact
rtl.texi (117395) rtl.texi (119256)
1@c Copyright (C) 1988, 1989, 1992, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003
2@c Free Software Foundation, Inc.
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@node RTL
7@chapter RTL Representation
8@cindex RTL representation

--- 594 unchanged lines hidden (view full) ---

603Stored in the @code{integrated} field and printed as @samp{/i}.
604
605@findex RTX_UNCHANGING_P
606@cindex @code{reg} and @samp{/u}
607@cindex @code{mem} and @samp{/u}
608@cindex @code{concat} and @samp{/u}
609@cindex @code{unchanging}, in @code{reg} and @code{mem}
610@item RTX_UNCHANGING_P (@var{x})
1@c Copyright (C) 1988, 1989, 1992, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003
2@c Free Software Foundation, Inc.
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@node RTL
7@chapter RTL Representation
8@cindex RTL representation

--- 594 unchanged lines hidden (view full) ---

603Stored in the @code{integrated} field and printed as @samp{/i}.
604
605@findex RTX_UNCHANGING_P
606@cindex @code{reg} and @samp{/u}
607@cindex @code{mem} and @samp{/u}
608@cindex @code{concat} and @samp{/u}
609@cindex @code{unchanging}, in @code{reg} and @code{mem}
610@item RTX_UNCHANGING_P (@var{x})
611Nonzero in a @code{reg}, @code{mem}, or @code{concat} if the memory
612is set at most once,
613anywhere. This does not mean that it is function invariant.
611Nonzero in a @code{reg}, @code{mem}, or @code{concat} if the register or
612memory is set at most once, anywhere. This does not mean that it is
613function invariant.
614
615GCC uses this flag to determine whether two references conflict. As
616implemented by @code{true_dependence} in @file{alias.c} for memory
617references, unchanging memory can't conflict with non-unchanging memory;
618a non-unchanging read can conflict with a non-unchanging write; an
619unchanging read can conflict with an unchanging write (since there may
620be a single store to this address to initialize it); and an unchanging
621store can conflict with a non-unchanging read. This means we must make
622conservative assumptions when choosing the value of this flag for a
623memory reference to an object containing both unchanging and
624non-unchanging fields: we must set the flag when writing to the object
625and clear it when reading from the object.
626
614Stored in the @code{unchanging} field and printed as @samp{/u}.
615
616@findex SCHED_GROUP_P
617@cindex @code{insn} and @samp{/s}
618@cindex @code{call_insn} and @samp{/s}
619@cindex @code{jump_insn} and @samp{/s}
620@cindex @code{in_struct}, in @code{insn}, @code{jump_insn} and @code{call_insn}
621@item SCHED_GROUP_P (@var{x})

--- 60 unchanged lines hidden (view full) ---

682was promoted to a wider mode in accord with the @code{PROMOTED_MODE} machine
683description macro (@pxref{Storage Layout}). In this case, the mode of
684the @code{subreg} is the declared mode of the object and the mode of
685@code{SUBREG_REG} is the mode of the register that holds the object.
686Promoted variables are always either sign- or zero-extended to the wider
687mode on every assignment. Stored in the @code{in_struct} field and
688printed as @samp{/s}.
689
627Stored in the @code{unchanging} field and printed as @samp{/u}.
628
629@findex SCHED_GROUP_P
630@cindex @code{insn} and @samp{/s}
631@cindex @code{call_insn} and @samp{/s}
632@cindex @code{jump_insn} and @samp{/s}
633@cindex @code{in_struct}, in @code{insn}, @code{jump_insn} and @code{call_insn}
634@item SCHED_GROUP_P (@var{x})

--- 60 unchanged lines hidden (view full) ---

695was promoted to a wider mode in accord with the @code{PROMOTED_MODE} machine
696description macro (@pxref{Storage Layout}). In this case, the mode of
697the @code{subreg} is the declared mode of the object and the mode of
698@code{SUBREG_REG} is the mode of the register that holds the object.
699Promoted variables are always either sign- or zero-extended to the wider
700mode on every assignment. Stored in the @code{in_struct} field and
701printed as @samp{/s}.
702
690@findex SYMBOL_REF_FLAG
691@cindex @code{symbol_ref} and @samp{/v}
692@cindex @code{volatil}, in @code{symbol_ref}
693@item SYMBOL_REF_FLAG (@var{x})
694In a @code{symbol_ref}, this is used as a flag for machine-specific purposes.
695Stored in the @code{volatil} field and printed as @samp{/v}.
696
697@findex SYMBOL_REF_USED
698@cindex @code{used}, in @code{symbol_ref}
699@item SYMBOL_REF_USED (@var{x})
700In a @code{symbol_ref}, indicates that @var{x} has been used. This is
701normally only used to ensure that @var{x} is only declared external
702once. Stored in the @code{used} field.
703
704@findex SYMBOL_REF_WEAK
705@cindex @code{symbol_ref} and @samp{/i}
706@cindex @code{integrated}, in @code{symbol_ref}
707@item SYMBOL_REF_WEAK (@var{x})
708In a @code{symbol_ref}, indicates that @var{x} has been declared weak.
709Stored in the @code{integrated} field and printed as @samp{/i}.
703@findex SYMBOL_REF_USED
704@cindex @code{used}, in @code{symbol_ref}
705@item SYMBOL_REF_USED (@var{x})
706In a @code{symbol_ref}, indicates that @var{x} has been used. This is
707normally only used to ensure that @var{x} is only declared external
708once. Stored in the @code{used} field.
709
710@findex SYMBOL_REF_WEAK
711@cindex @code{symbol_ref} and @samp{/i}
712@cindex @code{integrated}, in @code{symbol_ref}
713@item SYMBOL_REF_WEAK (@var{x})
714In a @code{symbol_ref}, indicates that @var{x} has been declared weak.
715Stored in the @code{integrated} field and printed as @samp{/i}.
716
717@findex SYMBOL_REF_FLAG
718@cindex @code{symbol_ref} and @samp{/v}
719@cindex @code{volatil}, in @code{symbol_ref}
720@item SYMBOL_REF_FLAG (@var{x})
721In a @code{symbol_ref}, this is used as a flag for machine-specific purposes.
722Stored in the @code{volatil} field and printed as @samp{/v}.
723
724Most uses of @code{SYMBOL_REF_FLAG} are historic and may be subsumed
725by @code{SYMBOL_REF_FLAGS}. Certainly use of @code{SYMBOL_REF_FLAGS}
726is mandatory if the target requires more than one bit of storage.
710@end table
711
712These are the fields to which the above macros refer:
713
714@table @code
715@findex call
716@cindex @samp{/c} in RTL dump
717@item call

--- 1472 unchanged lines hidden (view full) ---

2190the codes described above, which represent values, appear only as
2191the operands of these.
2192
2193@table @code
2194@findex set
2195@item (set @var{lval} @var{x})
2196Represents the action of storing the value of @var{x} into the place
2197represented by @var{lval}. @var{lval} must be an expression
727@end table
728
729These are the fields to which the above macros refer:
730
731@table @code
732@findex call
733@cindex @samp{/c} in RTL dump
734@item call

--- 1472 unchanged lines hidden (view full) ---

2207the codes described above, which represent values, appear only as
2208the operands of these.
2209
2210@table @code
2211@findex set
2212@item (set @var{lval} @var{x})
2213Represents the action of storing the value of @var{x} into the place
2214represented by @var{lval}. @var{lval} must be an expression
2198representing a place that can be stored in: @code{reg} (or @code{subreg}
2199or @code{strict_low_part}), @code{mem}, @code{pc}, @code{parallel}, or
2200@code{cc0}.
2215representing a place that can be stored in: @code{reg} (or @code{subreg},
2216@code{strict_low_part} or @code{zero_extract}), @code{mem}, @code{pc},
2217@code{parallel}, or @code{cc0}.
2201
2202If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a
2203machine mode; then @var{x} must be valid for that mode.
2204
2205If @var{lval} is a @code{reg} whose machine mode is less than the full
2206width of the register, then it means that the part of the register
2207specified by the machine mode is given the specified value and the
2208rest of the register receives an undefined value. Likewise, if
2209@var{lval} is a @code{subreg} whose machine mode is narrower than
2210the mode of the register, the rest of the register can be changed in
2211an undefined way.
2212
2218
2219If @var{lval} is a @code{reg}, @code{subreg} or @code{mem}, it has a
2220machine mode; then @var{x} must be valid for that mode.
2221
2222If @var{lval} is a @code{reg} whose machine mode is less than the full
2223width of the register, then it means that the part of the register
2224specified by the machine mode is given the specified value and the
2225rest of the register receives an undefined value. Likewise, if
2226@var{lval} is a @code{subreg} whose machine mode is narrower than
2227the mode of the register, the rest of the register can be changed in
2228an undefined way.
2229
2213If @var{lval} is a @code{strict_low_part} of a @code{subreg}, then the
2214part of the register specified by the machine mode of the
2215@code{subreg} is given the value @var{x} and the rest of the register
2216is not changed.
2230If @var{lval} is a @code{strict_low_part} or @code{zero_extract}
2231of a @code{subreg}, then the part of the register specified by the
2232machine mode of the @code{subreg} is given the value @var{x} and
2233the rest of the register is not changed.
2217
2218If @var{lval} is @code{(cc0)}, it has no machine mode, and @var{x} may
2219be either a @code{compare} expression or a value that may have any mode.
2220The latter case represents a ``test'' instruction. The expression
2221@code{(set (cc0) (reg:@var{m} @var{n}))} is equivalent to
2222@code{(set (cc0) (compare (reg:@var{m} @var{n}) (const_int 0)))}.
2223Use the former expression to save space during the compilation.
2224

--- 1249 unchanged lines hidden ---
2234
2235If @var{lval} is @code{(cc0)}, it has no machine mode, and @var{x} may
2236be either a @code{compare} expression or a value that may have any mode.
2237The latter case represents a ``test'' instruction. The expression
2238@code{(set (cc0) (reg:@var{m} @var{n}))} is equivalent to
2239@code{(set (cc0) (compare (reg:@var{m} @var{n}) (const_int 0)))}.
2240Use the former expression to save space during the compilation.
2241

--- 1249 unchanged lines hidden ---