This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[tree-ssa]: Dominator opts change LHS without changing VDEF's
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: gcc at gcc dot gnu dot org
- Cc: Diego Novillo <dnovillo at redhat dot com>,Jeff Law <law at redhat dot com>
- Date: Sun, 10 Aug 2003 16:35:42 -0400
- Subject: [tree-ssa]: Dominator opts change LHS without changing VDEF's
Diego, this is the bitmap.i problem i sent you.
This is only visible with points-to on, because it better disambiguates.
The problem is that dominator opts changes:
# MT.564_34 = VDEF <MT.564_33>;
# VUSE <bitmap_free_32>;
elt_29->next = (struct bitmap_element_def *)bitmap_free
into
elt_7->next = (struct bitmap_element_def *)bitmap_free
This causes the vdef's to changes, because the memory tag for elt isn't
the same as elt.
Since the new VDEF is never rewritten, DCE aborts when it sees it.
(FYI elt and elt aren't actually the same variable, the function looks
like this in GIMPLE form):
bitmap_element_free (struct bitmap_element *elt)
{
....
{
struct bitmap_element * elt;
struct bitmap_head_def * head;
head = head;
elt = elt;
}
}
Dominator opts needs to be fixed to update the VDEF when the LHS
changes.
--Dan