Comment at end of stmt:expand_decl

Jeffrey A Law
Mon Feb 7 09:18:00 GMT 2000

  In message < >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  (

        * 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.


More information about the Gcc mailing list