[Bug tree-optimization/78821] GCC7: Copying whole 32 bits structure field by field not optimised into copying whole 32 bits at once

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Nov 13 10:26:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78821

--- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Mon Nov 13 10:26:13 2017
New Revision: 254679

URL: https://gcc.gnu.org/viewcvs?rev=254679&root=gcc&view=rev
Log:
        PR tree-optimization/78821
        * gimple-ssa-store-merging.c (compatible_load_p): Don't require
        that bit_not_p is the same.
        (imm_store_chain_info::coalesce_immediate_stores): Likewise.
        (split_group): Count precisely bit_not_p bits in each statement.
        (invert_op): New function.
        (imm_store_chain_info::output_merged_store): Use invert_op to
        emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
        but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.

        * gcc.dg/store_merging_15.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/store_merging_15.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimple-ssa-store-merging.c
    trunk/gcc/testsuite/ChangeLog


More information about the Gcc-bugs mailing list