This is the mail archive of the gcc-patches@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]

Re: [PATCH] variable size arrays in nested functions


On Fri, Feb 09, 2001 at 03:07:47PM -0500, Jakub Jelinek wrote:
> Basically, what's going on is that variable_size takes care of putting the
> SAVE_EXPR on pending list, but SAVE_EXPRs can be created deeply from fold
> (the problematic SAVE_EXPR is actually created from within build_array_type
> when building TREE_SIZE()). get_pending_sizes() takes care of fixing up
> context of the SAVE_EXPRs recorded by variable_size but this one slips
> through.

Oh.  I see.  Dear lord this is ugly.  Let us all look forward to that
blessed day in which SAVE_EXPR is forever banished to the pit.

I have a feeling that the code in extract_muldiv that is creating the
new SAVE_EXPR in question is not safe.  I think it _was_ safe when we
were evaluating things a statement at a time, but not now that we are
doing functions as trees.  Because now "SAVE_EXPR_RTL (t) == 0" doesn't
mean that there isn't a (program order) previous ocurrence of T and
a subsequent modification of one of T's arguments.

Does removing the SAVE_EXPR case from extract_muldiv also solve the
problem?


r~


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