diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-01-16 09:53:09 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-01-16 09:53:09 +0100 |
commit | be52ac73d120b5bf27f13c41656c6cfe132c8c30 (patch) | |
tree | 4e0379718b535782cc33097fddd35acb12ce04ae /gcc/gimple-ssa-store-merging.c | |
parent | 2bbc5c34e4cd000532dfdf68fd294f02ba5f1dbb (diff) | |
download | gcc-be52ac73d120b5bf27f13c41656c6cfe132c8c30.zip gcc-be52ac73d120b5bf27f13c41656c6cfe132c8c30.tar.gz gcc-be52ac73d120b5bf27f13c41656c6cfe132c8c30.tar.bz2 |
re PR tree-optimization/83843 (wrong code at -O2)
PR tree-optimization/83843
* gimple-ssa-store-merging.c
(imm_store_chain_info::output_merged_store): Handle bit_not_p on
store_immediate_info for bswap/nop orig_stores.
* gcc.dg/store_merging_18.c: New test.
From-SVN: r256727
Diffstat (limited to 'gcc/gimple-ssa-store-merging.c')
-rw-r--r-- | gcc/gimple-ssa-store-merging.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/gimple-ssa-store-merging.c b/gcc/gimple-ssa-store-merging.c index 9321177..92ddfb5 100644 --- a/gcc/gimple-ssa-store-merging.c +++ b/gcc/gimple-ssa-store-merging.c @@ -3619,6 +3619,15 @@ imm_store_chain_info::output_merged_store (merged_store_group *group) gimple_seq_add_stmt_without_update (&seq, stmt); src = gimple_assign_lhs (stmt); } + inv_op = invert_op (split_store, 2, int_type, xor_mask); + if (inv_op != NOP_EXPR) + { + stmt = gimple_build_assign (make_ssa_name (int_type), + inv_op, src, xor_mask); + gimple_set_location (stmt, loc); + gimple_seq_add_stmt_without_update (&seq, stmt); + src = gimple_assign_lhs (stmt); + } break; default: src = ops[0]; |