RFA: Fix rtl-optimization/57425
Joern Rennecke
joern.rennecke@embecosm.com
Tue Jun 18 19:53:00 GMT 2013
Quoting Michael Matz <matz@suse.de>:
> So, first the potentially clobbering write, then the read. And indeed in
> check_dependence d->exp is the write and x the read that is potentially
> clobbered.
Oops, you are right. I got confused because what is X in cse.c:invalidate
ends up as d->exp in cse.c:check_dependence, and what is &p->canon_exp in
cse.c:invalidate ends up as X in cse.c:check_dependence.
I was a bit puzzled why we could have a STRICT_LOW_PART for MEM. Now it
makes more sense.
I also see now that both the read expression from the hash table and the
write address are canonicalized, so if we have a canon_* interface, we
want to use both.
> Generally I would prefer simple interfaces to the query functions,
> dependence problems are hard enough to think about without functions
> needing four arguments. Does it really save much to not canonicalize the
> mem address for some calls?
I haven't measured it myself, but I suppose it must be there for a
good reason.
Of course a simpler interface would be nice, however...
When cse encounters a write, it goes through the entire hash table of
expressions and checks dependencies. So for (extended?) basic blocks with
lots of expressions & writes, we got O(n^2) dependency checks.
More information about the Gcc-patches
mailing list