aboutsummaryrefslogtreecommitdiff
path: root/gcc/stor-layout.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-06-28 11:55:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-06-28 11:55:19 +0000
commit7d4cdbd485607cc1d575a42d815a5dec7708aded (patch)
treecc5f212f823778695adf1ffc90a0354537fe9967 /gcc/stor-layout.c
parente9ac1f86bf70e0ca794fed6ba3b8fe3026da063e (diff)
downloadgcc-7d4cdbd485607cc1d575a42d815a5dec7708aded.zip
gcc-7d4cdbd485607cc1d575a42d815a5dec7708aded.tar.gz
gcc-7d4cdbd485607cc1d575a42d815a5dec7708aded.tar.bz2
tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): Properly handle DECL_BIT_FIELD_REPRESENTATIVE occuring as COMPONENT_REF operand.
2016-06-28 Richard Biener <rguenther@suse.de> * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): Properly handle DECL_BIT_FIELD_REPRESENTATIVE occuring as COMPONENT_REF operand. (nonoverlapping_component_refs_p): Likewise. * stor-layout.c (start_bitfield_representative): Mark DECL_BIT_FIELD_REPRESENTATIVE as DECL_NONADDRESSABLE_P. From-SVN: r237818
Diffstat (limited to 'gcc/stor-layout.c')
-rw-r--r--gcc/stor-layout.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 40170ef..d66d769 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -1808,6 +1808,11 @@ start_bitfield_representative (tree field)
DECL_SIZE_UNIT (repr) = DECL_SIZE_UNIT (field);
DECL_PACKED (repr) = DECL_PACKED (field);
DECL_CONTEXT (repr) = DECL_CONTEXT (field);
+ /* There are no indirect accesses to this field. If we introduce
+ some then they have to use the record alias set. This makes
+ sure to properly conflict with [indirect] accesses to addressable
+ fields of the bitfield group. */
+ DECL_NONADDRESSABLE_P (repr) = 1;
return repr;
}