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

[PATCH] Fix PR36327, make SCCVN look through struct copies and handle memset and = {}


This makes SCCVN translate references through aggregate copies during lookup and
makes it lookup references from zeroing memset and aggregate
assignments from {}.

The patch required some more obfuscation in vectorizer testcases again.

Bootstrapped and tested on x86_64-unknown-linux-gnu, I will apply this patch
next week.

Thanks,
Richard.

2009-05-23  Richard Guenther  <rguenther@suse.de>

        PR tree-optimization/36327
        * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
        callback for reference translation or lookup at the point
        of may-defs.
        * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
        * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
        for union COMPONENT_REFs.
        (vn_reference_lookup_3): New callback.  Lookup from memset
        and CONSTRUCTOR assignment, translate through struct copies.
        (vn_reference_lookup_pieces): Make sure to not free the
        passed operands array.  Adjust walk_non_aliased_vuses call.
        (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
        make sure we do not leak memory.

        * gcc.dg/tree-ssa/ssa-fre-24.c: New testcase.
        * gcc.dg/tree-ssa/ssa-fre-25.c: Likewise.
        * gcc.dg/tree-ssa/sra-2.c: Disable FRE.
        * gcc.dg/vect/no-vfa-vect-43.c: Adjust.
        * gcc.dg/vect/vect-40.c: Likewise.
        * gcc.dg/vect/vect-42.c: Likewise.
        * gcc.dg/vect/vect-46.c: Likewise.
        * gcc.dg/vect/vect-76.c: Likewise.

Attachment: sccvn-lookthrough
Description: Binary data


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