aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/cil32/gimple-to-cil.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/cil32/gimple-to-cil.c')
-rw-r--r--gcc/config/cil32/gimple-to-cil.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/cil32/gimple-to-cil.c b/gcc/config/cil32/gimple-to-cil.c
index 14e5a8a2366..6e81dc38c4d 100644
--- a/gcc/config/cil32/gimple-to-cil.c
+++ b/gcc/config/cil32/gimple-to-cil.c
@@ -654,6 +654,10 @@ gen_modify_expr (cil_stmt_iterator *csi, tree lhs, tree rhs)
gen_addr_expr (csi, obj);
gimple_to_cil_node (csi, rhs);
stmt = cil_build_stmt_arg (CIL_STFLD, fld);
+
+ if (contains_packed_reference (lhs))
+ cil_set_prefix_unaligned (stmt, 1);
+
cil_set_prefix_volatile (stmt, TREE_THIS_VOLATILE (lhs));
csi_insert_after (csi, stmt, CSI_CONTINUE_LINKING);
}
@@ -2096,6 +2100,10 @@ gen_comp_ref (cil_stmt_iterator *csi, tree node)
{
gen_addr_expr (csi, obj);
stmt = cil_build_stmt_arg (CIL_LDFLD, fld);
+
+ if (contains_packed_reference (node))
+ cil_set_prefix_unaligned (stmt, 1);
+
cil_set_prefix_volatile (stmt, TREE_THIS_VOLATILE (node));
csi_insert_after (csi, stmt, CSI_CONTINUE_LINKING);
}