diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 311f26bd42732f87eec689963edc3c265a72a59d..190d3873bd7358f08662f735d8c323cef6c41525 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-22  Peter Bergner <bergner@vnet.ibm.com>
+
+	PR middle-end/28690
+	* explow.c (force_reg): Set REG_POINTER flag according to
+	MEM_POINTER flag.
+
 2006-09-22  Zdenek Dvorak <dvorakz@suse.cz>
 
 	PR tree-optimization/28888
diff --git a/gcc/explow.c b/gcc/explow.c
index 2cc34899197ffbfce4c559e2dec8c173f2646705..e21e9c112ecbc36233759dcf404974d6fc754e61 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -710,6 +710,8 @@ force_reg (enum machine_mode mode, rtx x)
 
 	align = MIN (sa, ca);
       }
+    else if (MEM_P (x) && MEM_POINTER (x))
+      align = MEM_ALIGN (x);
 
     if (align)
       mark_reg_pointer (temp, align);