This is the mail archive of the gcc@gcc.gnu.org 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]

[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



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