This is the mail archive of the 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: GCC Status Report (2004-03-09)

Jakub Jelinek wrote:

On Sat, Mar 20, 2004 at 12:04:02PM +0100, Eric Botcazou wrote:

2004-03-20  Eric Botcazou <>
            Mark Mitchell <>

PR optimization/13424
* explow.c (maybe_set_unchanging): Revert 2003-04-07 patch.
* tree.h (readwrite_fields_p): New prototype.
* alias.c (readwrite_fields_p): New function.
* expr.c (store_constructor): When clearing the aggregate because of
an incomplete or mostly zero constructor, do not put the /u flag if the
target is already unchanging. Record whether a non-unchanging
aggregate containing read-write fields is cleared with the /u flag.
In that case, emit a blockage right after the clearing.

Is this patch going to be used for gcc-3_4-branch or are we looking for a different solution?

Yes. I believe I already approved this patch for 3.4, but Eric hasn't applied it yet. I'm not sure why not; perhaps I lost a message in the thread somewhere.

Would you mind applying Eric's patch, with your addition below?

If the former, IMHO we need a small follow-up attached below.
If a decl is DECL_EXTERNAL, it probably has no DECL_INITIAL but still
is always ok to have RTX_UNCHANGING_P - it is not initialized in the current

To say "need" is strong because all your patch does is avoid one particular pessimization, but I believe your patch is useful, so let's add it in.

It occurs to me that maybe we could (in the longer term) represent this with alias sets; the writes to the const memory would be in the same alias set. The alias set would have to be marked as *not* aliasing writes to alias set zero. That would allow the optimizers to understand the relationship correctly without the barrier.


Mark Mitchell
CodeSourcery, LLC
(916) 791-8304

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