This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Comment at end of stmt:expand_decl
- To: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Subject: Re: Comment at end of stmt:expand_decl
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Mon, 07 Feb 2000 10:12:47 -0700
- cc: gcc at gcc dot gnu dot org
- Reply-To: law at cygnus dot com
In message <10002062338.AA27015@vlsi1.ultra.nyu.edu>you write:
> Does that comment make sense to anybody?
>
> RTX_UNCHANGING_P means that a register is only set once. WHat does it
> matter whether the scope of the variable is or is not the entire function?
>
> RIght now, this is the source of a bug since if we put a variable into the
> stack via ADDRESSOF, references to the variable before it was put into
> the stack will not have RTX_UNCHANING_P set but those after will, which
> will cause the scheduler to do the wrong thing.
>
> I propose removing the comment in question and doign the code that is
> current #if 0'ed out. Does anybody know why this would be wrong?
The change was added by Wilson in 1993 -- if you look at the old gcc2 sources:
Fri May 14 13:23:51 1993 Jim Wilson (wilson@wookumz.gnu.ai.mit.edu)
* integrate.c (expand_inline_function): Set map->integrating.
(copy_rtx_and_substitute, case MEM): Don't copy RTX_UNCHANGING_P
when doing function inlining.
* integrate.h (struct inline_remap): Add integrating field.
* unroll.c (unroll_loop): Clear map->integrating.
* stmt.c (expand_decl): Don't set RTX_UNCHANGING_P.
Presumably the change is somehow related to problems inlining.
jeff