This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ICE in change_address at emit_rtl.c
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: per at bothner dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 25 Nov 01 17:55:39 EST
- Subject: Re: ICE in change_address at emit_rtl.c
The big difference is that the temporary used by LET_EXPR (actually
LET_EXPR can be used to encode user-level declarations too) has a
well-defined scope. It is clear when the temporary register needs to
be allocated (on entrance to the BODY expression) to be allocated, and
it is clear when it can be freed (on exit from the BODY expression).
Neither are true for SAVE_EXPR, which is much less well defined.
I disagree. The scopes of both need to be exactly the same: the scope of
the underlying expression. It's not possible for fold to know that so it
would have to do the same thing with the new LET_EXPR as for the present
SAVE_EXPR. I don't see how this changes things at all.
In both cases we are allocating a temporary and we are guessing as to its
scope.