This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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 <ebotcazou@libertysurf.fr>
Mark Mitchell <mark@codesourcery.com>
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
routine.
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.
Thanks,
--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com