re PR target/52080 (Stores to bitfields introduce a store-data-race on adjacent data)
authorRichard Guenther <rguenther@suse.de>
Wed, 14 Mar 2012 10:55:09 +0000 (10:55 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 14 Mar 2012 10:55:09 +0000 (10:55 +0000)
commit26c71b9368c1ef1929205fe1aafab1748640596b
tree26fd822d80791483a72e46062854af7176b44033
parent1caf8dd66c44ca5e25574be4cde0fd1ed7581584
re PR target/52080 (Stores to bitfields introduce a store-data-race on adjacent data)

2012-03-14  Richard Guenther  <rguenther@suse.de>

* tree.h (DECL_BIT_FIELD_REPRESENTATIVE): New define.
* stor-layout.c (start_bitfield_representative): New function.
(finish_bitfield_representative): Likewise.
(finish_bitfield_layout): Likewise.
(finish_record_layout): Call finish_bitfield_layout.
* tree.c (free_lang_data_in_decl): Only free DECL_QUALIFIER
for QUAL_UNION_TYPE fields.
* tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
Stream DECL_BIT_FIELD_REPRESENTATIVE.
* tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.

PR middle-end/52080
PR middle-end/52097
PR middle-end/48124
* expr.c (get_bit_range): Unconditionally extract bitrange
from DECL_BIT_FIELD_REPRESENTATIVE.
(expand_assignment): Adjust call to get_bit_range.

* gcc.dg/torture/pr48124-1.c: New testcase.
* gcc.dg/torture/pr48124-2.c: Likewise.
* gcc.dg/torture/pr48124-3.c: Likewise.
* gcc.dg/torture/pr48124-4.c: Likewise.

From-SVN: r185379
12 files changed:
gcc/ChangeLog
gcc/expr.c
gcc/stor-layout.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr48124-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr48124-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr48124-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr48124-4.c [new file with mode: 0644]
gcc/tree-streamer-in.c
gcc/tree-streamer-out.c
gcc/tree.c
gcc/tree.h