aboutsummaryrefslogtreecommitdiff
path: root/gcc/langhooks.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-12-16 09:40:03 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-12-16 09:40:03 +0000
commitb7fc43d7c747d190e197ca89cfce4f1d9def7c7e (patch)
treee7a4831ca7b46e08d1f5bc38c1d4f221aa7cfbbe /gcc/langhooks.c
parentc4d5c5e6ac73cac2b89d039eff9874ff80742589 (diff)
downloadgcc-b7fc43d7c747d190e197ca89cfce4f1d9def7c7e.zip
gcc-b7fc43d7c747d190e197ca89cfce4f1d9def7c7e.tar.gz
gcc-b7fc43d7c747d190e197ca89cfce4f1d9def7c7e.tar.bz2
re PR c++/71694 (store-data race with bitfields and tail-padding in C++)
2016-12-16 Richard Biener <rguenther@suse.de> PR c++/71694 * langhooks-def.h (lhd_unit_size_without_reusable_padding): Declare. (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Adjust. * langhooks.h (struct lang_hooks_for_types): Add unit_size_without_reusable_padding. * langhooks.c (lhd_unit_size_without_reusable_padding): New. * stor-layout.c (finish_bitfield_representative): Use unit_size_without_reusable_padding langhook to decide on the last representatives size. cp/ * cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare. (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define. * cp-objcp-common.c (cp_unit_size_without_reusable_padding): New. * g++.dg/pr71694.C: New testcase. From-SVN: r243738
Diffstat (limited to 'gcc/langhooks.c')
-rw-r--r--gcc/langhooks.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 1ce1962..260d33c 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -729,6 +729,15 @@ lhd_type_dwarf_attribute (const_tree, int)
return -1;
}
+/* Default implementation of LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING.
+ Just return TYPE_SIZE_UNIT unadjusted. */
+
+tree
+lhd_unit_size_without_reusable_padding (tree t)
+{
+ return TYPE_SIZE_UNIT (t);
+}
+
/* Returns true if the current lang_hooks represents the GNU C frontend. */
bool