diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 662fae31cf20f29e6daa64067344660f6a94ca51..abf4283dc645b04df2da306512e04597e68c1144 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-12-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* expr.c (expand_assignment): Update bitregion_start and
+	bitregion_end.
+
 2013-12-06  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR target/59316
diff --git a/gcc/expr.c b/gcc/expr.c
index 2a13d8f961865e8053788fbf25f11a499ef6c55f..f173d032c21ef28125de41bfd1e53e98c5dc4399 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4880,6 +4880,9 @@ expand_assignment (tree to, tree from, bool nontemporal)
 	      && MEM_ALIGN (to_rtx) == GET_MODE_ALIGNMENT (mode1))
 	    {
 	      to_rtx = adjust_address (to_rtx, mode1, bitpos / BITS_PER_UNIT);
+	      bitregion_start = 0;
+	      if (bitregion_end >= (unsigned HOST_WIDE_INT) bitpos)
+		bitregion_end -= bitpos;
 	      bitpos = 0;
 	    }