[gcc] Make copy-propagated pointers be addressed in Pmode.

BUG: http://code.google.com/p/nativeclient/issues/detail?id=453
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d23b4ba..42c2dbf 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -19102,7 +19102,12 @@
 	   ? !sibcall_insn_operand (XEXP (fnaddr, 0), Pmode)
 	   : !call_insn_operand (XEXP (fnaddr, 0), Pmode))
     {
-      fnaddr = copy_to_mode_reg (Pmode, XEXP (fnaddr, 0));
+      fnaddr = copy_to_mode_reg (ptr_mode, XEXP (fnaddr, 0));
+      if (Pmode != ptr_mode)
+	{
+	  fnaddr = gen_lowpart (Pmode, fnaddr);
+	  fnaddr = force_reg(Pmode, fnaddr);
+	}
       fnaddr = gen_rtx_MEM (QImode, fnaddr);
     }