File cse-mem-expr.patch of Package gcc33
Index: gcc/cse.c
===================================================================
--- gcc/cse.c.orig 2009-11-20 13:05:39.000000000 +0100
+++ gcc/cse.c 2009-11-20 13:05:57.000000000 +0100
@@ -6712,7 +6712,8 @@ invalidate_skipped_set (dest, set, data)
a BLKmode or nonscalar memory reference or a reference to a
variable address. */
&& (MEM_IN_STRUCT_P (dest) || GET_MODE (dest) == BLKmode
- || cse_rtx_varies_p (XEXP (dest, 0), 0)))
+ || cse_rtx_varies_p (XEXP (dest, 0), 0))
+ && !MEM_EXPR (dest))
{
invalidate_memory ();
return;