Hi,
This patch fixes PR91137 by finding base objects with walk_tree utility.  Note 
we specially return
integer_zero_node when a tree expression contains multiple base objects.  This 
works since the
special node is compared unequal to any real base object, thus skipped in 
candidate selection.
This is intended to avoid propagating multiple base objects (maybe introduced 
by programmer).

Bootstrap and test on x86_64.  Is it OK?

Thanks,
bin
2019-07-15  Bin Cheng  <bin.li...@linux.alibaba.com>

        PR tree-optimization/91137
        * tree-ssa-loop-ivopts.c (struct ivopts_data): New field.
        (tree_ssa_iv_optimize_init, alloc_iv, tree_ssa_iv_optimize_finalize):
        Init, use and fini the above new field.
        (determine_base_object_1): New function.
        (determine_base_object): Reimplement using walk_tree.

gcc/testsuite
2019-07-15  Bin Cheng  <bin.li...@linux.alibaba.com>

        PR tree-optimization/91137
        * gcc.c-torture/execute/pr91137.c: New test.

Attachment: 0001-pr91137-20190715.patch
Description: Binary data

Reply via email to