From: Jeffrey A Law Date: Wed, 5 Nov 1997 21:17:36 +0000 (+0000) Subject: alias.c (find_base_value): Only return the known base value for pseudo registers. X-Git-Tag: releases/egcs-1.0.0~159 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b25cf9d2d4f22c496c2216395a5a743d079ca3e1;p=thirdparty%2Fgcc.git alias.c (find_base_value): Only return the known base value for pseudo registers. * alias.c (find_base_value): Only return the known base value for pseudo registers. From-SVN: r16343 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 686681cabb98..855caae8f852 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,9 @@ Wed Nov 5 01:42:12 1997 Jeffrey A Law (law@cygnus.com) * version.c: Bump for snapshot. + * alias.c (find_base_value): Only return the known base value for + pseudo registers. + Tue Nov 4 16:07:15 1997 Jeffrey A Law (law@cygnus.com) * fixincludes: Fix "hypot" prototype in NeXT math.h. diff --git a/gcc/alias.c b/gcc/alias.c index 0943444185a2..025da501a427 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -102,10 +102,14 @@ find_base_value (src) if (REGNO (src) < FIRST_PSEUDO_REGISTER && copying_arguments) return new_reg_base_value[REGNO (src)]; - /* If this REG is related to a known base value, return it. - This must happen after the arg register check above to avoid - circular set chains. */ - if (reg_base_value[REGNO (src)]) + /* If a pseudo has a known base value, return it. Do not do this + for hard regs since it can result in a circular dependency + chain for registers which have values at function entry. + + The test above is not sufficient because the scheduler may move + a copy out of an arg reg past the NOTE_INSN_FUNCTION_BEGIN. */ + if (REGNO (src) >= FIRST_PSEUDO_REGISTER + && reg_base_value[REGNO (src)]) return reg_base_value[REGNO (src)]; return src;