This is the mail archive of the gcc@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]
Other format: [Raw text]

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.


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