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]
Other format: [Raw text]

Re: [patch] Introduce deep unsharing


On Wed, May 19, 2010 at 10:19 AM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> Wouldn't it be simpler (or would it be possible at all) to always
>> unshare the SAVE_EXPR operand in gimplify_save_expr
>> if !SAVE_EXPR_RESOLVED_P? ?That would avoid the pointer-map
>> and I'd say we can do so unconditionally.
>
> I forgot about something: statement expressions. ?C and Java generate them,
> and Ada is about to do it to support a new FE node N_Expression_With_Actions.
> They are wrapped up in a SAVE_EXPR and you cannot call unshare_expr on them,

Uh ...

> this will abort. ?That's why there is a specific line in my patch for them.
> Moreover, they are generally referenced only once so blindly unsharing them
> will be a sheer waste of resources.
>
> I'd also be able to experiment with TARGET_EXPR for Ada in the future so I'd
> prefer that it be addressed in the patch as well.
>
> So, in the end, I think my patch is the best compromise: it only affects Ada
> (so I won't have to face the libjava monster in case something goes awry :-),
> it doesn't unshare unnecessarily for the most common cases, it doesn't add
> unsharing in the middle of gimplication and it already handles TARGET_EXPR.

The patch is ok.

Thanks for your patience,
Richard.

> --
> Eric Botcazou
>


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