* gimple-ssa-store-merging.c: Include gimple-fold.h.
commit10f0d48dc95a217c431d15c9e5cba1a21e21eea9
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Jun 2018 21:56:17 +0000 (1 21:56 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Jun 2018 21:56:17 +0000 (1 21:56 +0000)
tree74f52c0467c0cc3dc782bd91574a854e7c6fec82
parent20a0a98eabdfb4d11b64d2fb805dcc83a5855422
* gimple-ssa-store-merging.c: Include gimple-fold.h.
(struct store_immediate_info): Document BIT_INSERT_EXPR stores.
(struct merged_store_group): Add bit_insertion field.
(dump_char_array): Use standard hexadecimal format.
(merged_store_group::merged_store_group): Set bit_insertion to false.
(merged_store_group::apply_stores): Use optimal buffer size.  Deal
with BIT_INSERT_EXPR stores.  Move up code updating the mask and
also print the mask in the dump file.
(pass_store_merging::gate): Minor tweak.
(imm_store_chain_info::coalesce_immediate): Fix wrong association
of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
stores with INTEGER_CST stores.
(count_multiple_uses) <BIT_INSERT_EXPR>: New case.
(imm_store_chain_info::output_merged_store): Add try_bitpos variable
and use it throughout.  Generate bit insertion sequences if need be.
(pass_store_merging::process_store): Remove redundant condition.
Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261089 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/gimple-ssa-store-merging.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/store_merging_20.c [new file with mode: 0644]
gcc/testsuite/gnat.dg/opt71.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/opt71_pkg.ads [new file with mode: 0644]