From 8f0b8dd25b7592e2689c20efa7ac70f588bb825c Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 21 Apr 2003 22:39:26 +0000 Subject: Refine last change. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@65915 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/doc/rtl.texi | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'gcc/doc/rtl.texi') diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index 33057c3b7a8..8368b49f39c 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -725,10 +725,21 @@ Stored in the @code{integrated} field and printed as @samp{/i}. @item RTX_UNCHANGING_P (@var{x}) Nonzero in a @code{reg}, @code{mem}, or @code{concat} if the register or memory is set at most once, anywhere. This does not mean that it is -function invariant. This flag is used to determine whether two -references conflict. See @code{tree_dependence} in @file{alias.c} for -more details. Stored in the @code{unchanging} field and printed as -@samp{/u}. +function invariant. + +GCC uses this flag to determine whether two references conflict. As +implemented by @code{true_dependence} in @file{alias.c} for memory +references, unchanging memory can't conflict with non-unchanging memory; +a non-unchanging read can conflict with a non-unchanging write; an +unchanging read can conflict with an unchanging write (since there may +be a single store to this address to initialize it); and an unchanging +store can conflict with a non-unchanging read. This means we must make +conservative assumptions when chosing the value of this flag for a +memory reference to an object containing both unchanging and +non-unchanging fields: we must set the flag when writing to the object +and clear it when reading from the object. + +Stored in the @code{unchanging} field and printed as @samp{/u}. @findex SCHED_GROUP_P @cindex @code{insn} and @samp{/s} -- cgit v1.2.3