This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RFC: Are V_MUST_DEFs really necessary?
- From: Diego Novillo <dnovillo at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 08 Mar 2006 11:42:59 -0500
- Subject: RFC: Are V_MUST_DEFs really necessary?
While doing the memory SSA work, I started wondering about V_MUST_DEFs.
I think we don't need them anymore.
This may be a bit hasty on my part, I have not really thought it
through. But I cannot think of a single transformation that absolutely
*requires* V_MUST_DEFs to work.
When they were introduced, they would help propagation and DCE in cases
like:
# a_5 = V_MUST_DEF <a_4>;
a = 4;
# a_6 = V_MUST_DEF <a_5>;
a = 1;
where 'a' is a non-escaping addressable local. However, DSE will/should
also detect this chain, even if we used preserving defs (V_MAY_DEF).
This could also be handled with memory SSA by not chaining these two stores.
The propagators will happily propagate stores into V_MAY_DEFs, they do
not require V_MUST_DEFs to work.
Thoughts?