For gcc.dg/tree-ssa/loadpre6.c we see at FRE time

  # PT = { HEAP.9 } (glob)
  # USE = anything
  # CLB = anything
  unexpanded_var_list.0_25 = malloc (16);
  unexpanded_var_list = unexpanded_var_list.0_25;
  # PT = nonlocal escaped { HEAP.9 HEAP.10 } (glob)
  unexpanded_var_list.1_27 = unexpanded_var_list;
  unexpanded_var_list.1_27->list.value = 0B;
  # PT = nonlocal escaped { HEAP.9 HEAP.10 } (glob)
  unexpanded_var_list.1_32 = unexpanded_var_list;
  unexpanded_var_list.1_32->common.chain = 0B;
  # PT = nonlocal escaped { HEAP.9 HEAP.10 } (glob)
  last_34 = unexpanded_var_list;

where when looking up the load in the stmt setting last_34 it is
not disambiguated against unexpanded_var_list.1_32->common.chain
as unexpanded_var_list.1_32 is not value-replaced by
unexpanded_var_list.0_25 and thus stays with the weaker points-to
information.


-- 
           Summary: VN should value-replace operands during alias-oracle
                    walk
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Keywords: missed-optimization, alias
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44656

Reply via email to