Index: gcc/expr.c
===================================================================
--- gcc/expr.c	(Revision 202295)
+++ gcc/expr.c	(Arbeitskopie)
@@ -4641,8 +4641,6 @@
       int unsignedp;
       int volatilep = 0;
       tree tem;
-      bool misalignp;
-      rtx mem = NULL_RTX;
 
       push_temp_slots ();
       tem = get_inner_reference (to, &bitsize, &bitpos, &offset, &mode1,
@@ -4664,14 +4662,10 @@
 	{
 	  enum machine_mode address_mode;
 	  rtx op0;
-	  struct expand_operand ops[2];
 	  addr_space_t as = TYPE_ADDR_SPACE
 	      (TREE_TYPE (TREE_TYPE (TREE_OPERAND (tem, 0))));
 	  tree base = TREE_OPERAND (tem, 0);
 
-	  misalignp = true;
-	  to_rtx = gen_reg_rtx (mode);
-
 	  address_mode = targetm.addr_space.address_mode (as);
 	  op0 = expand_expr (base, NULL_RTX, VOIDmode, EXPAND_NORMAL);
 	  op0 = convert_memory_address_addr_space (address_mode, op0, as);
@@ -4682,28 +4676,14 @@
 	      op0 = simplify_gen_binary (PLUS, address_mode, op0, off);
 	    }
 	  op0 = memory_address_addr_space (mode, op0, as);
-	  mem = gen_rtx_MEM (mode, op0);
-	  set_mem_attributes (mem, tem, 0);
-	  set_mem_addr_space (mem, as);
+	  to_rtx = gen_rtx_MEM (mode, op0);
+	  set_mem_attributes (to_rtx, tem, 0);
+	  set_mem_addr_space (to_rtx, as);
 	  if (TREE_THIS_VOLATILE (tem))
-	    MEM_VOLATILE_P (mem) = 1;
-
-	  /* If the misaligned store doesn't overwrite all bits, perform
-	     rmw cycle on MEM.  */
-	  if (bitsize != GET_MODE_BITSIZE (mode))
-	    {
-	      create_input_operand (&ops[0], to_rtx, mode);
-	      create_fixed_operand (&ops[1], mem);
-	      /* The movmisalign<mode> pattern cannot fail, else the assignment
-		 would silently be omitted.  */
-	      expand_insn (icode, 2, ops);
-
-	      mem = copy_rtx (mem);
-	    }
+	    MEM_VOLATILE_P (to_rtx) = 1;
 	}
       else
 	{
-	  misalignp = false;
 	  to_rtx = expand_normal (tem);
 	}
 
@@ -4851,17 +4831,6 @@
 				  nontemporal);
 	}
 
-      if (misalignp)
-	{
-	  struct expand_operand ops[2];
-
-	  create_fixed_operand (&ops[0], mem);
-	  create_input_operand (&ops[1], to_rtx, mode);
-	  /* The movmisalign<mode> pattern cannot fail, else the assignment
-	     would silently be omitted.  */
-	  expand_insn (icode, 2, ops);
-	}
-
       if (result)
 	preserve_temp_slots (result);
       free_temp_slots ();
