Make copy-propagated pointers be addressed in Pmode.

BUG: http://code.google.com/p/nativeclient/issues/detail?id=453
diff -uNr gcc-4.4.3.orig/gcc/config/i386/i386.c gcc-4.4.3/gcc/config/i386/i386.c
--- gcc-4.4.3.orig/gcc/config/i386/i386.c	2010-04-28 16:21:13.000000000 +0200
+++ gcc-4.4.3/gcc/config/i386/i386.c	2010-04-28 16:22:02.000000000 +0200
@@ -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);
     }
 

Make copy-propagated pointers be addressed in Pmode.
Make copy-propagated pointers be addressed in Pmode.

BUG: http://code.google.com/p/nativeclient/issues/detail?id=453
Review URL: http://codereview.chromium.org/1700020

git-svn-id: 721b910a23eff8a86f00c8fd261a7587cddf18f8@2154 fcba33aa-ac0c-11dd-b9e7-8d5594d729c2
