This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: patch to alias.c checked in


At 10:23 2001-01-19, Joern Rennecke wrote:
>base_alias_check has this code:
>
>   /* If one address is a stack reference there can be no alias:
>      stack references using different base registers do not alias,
>      a stack reference can not alias a parameter, and a stack reference
>      can not alias a global.  */
>   if ((GET_CODE (x_base) == ADDRESS && GET_MODE (x_base) == Pmode)
>       || (GET_CODE (y_base) == ADDRESS && GET_MODE (y_base) == Pmode))
>     return 0;
>
>For this to work, we must make sure that when a the sum of an address
>and an offset is loaded into a register, we don't think that the offset
>is a base.  As the code was, when a register is first set to an offset,
>and record_set is called for an addition that adds in a base, it just
>left new_reg_base_value alone.
>
>Approved by Richard Henderson.
>
>Bootstrapped on i686-pc-linux-gnu.
>
>Mon Jan 15 17:21:10 2001  J"orn Rennecke <amylaar@redhat.com>
>
>         * alias.c (find_base_value): Recognize TRUNCATE.
>         (record_set): In PLUS case, invalidate if other summand is also a
>         base value.

Was this exposed by Bernd's recent work on init_alias_analysis() to 
recognize more stuff? Or is this an older bug? I'm asking cause I'm seeing 
miscompilation of glibc-2.2.1 on PPC that is fixed if I back out Bernds patch.

Franz.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]