diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 137b7c17558ee261f0e54ec8fef7b00446611231..7ee2b11e715b6cd579aa222e0750c65ca22d2262 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,14 @@
 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
 
+	* tree-ssa-reassoc.c (find_operand_rank): Cast pointer
+	via intptr_t to long type.
+	(insert_operand_rank): Cast long type via intptr_t to
+	pointer type.
+	* genattrtab.c (RTL_HASH): Use intptr_t to cast from
+	pointer to scalar.
+	* c-pretty-print.c (pp_c_tree_decl_identifier): Cast
+	from pointer to unsigned via uintptr_t.
+
 	* configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
 	uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
 	and HAVE_INTPTR_T.
diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c
index f9694bfc080c81993ae0341f7ec22336ef541e80..c4e6e96c296b0c0b6a7dc69026f5721b81139775 100644
--- a/gcc/c-pretty-print.c
+++ b/gcc/c-pretty-print.c
@@ -2235,7 +2235,7 @@ pp_c_tree_decl_identifier (c_pretty_printer *pp, tree t)
   else
     {
       static char xname[8];
-      sprintf (xname, "<U%4x>", ((unsigned)((unsigned long)(t) & 0xffff)));
+      sprintf (xname, "<U%4x>", ((unsigned)((uintptr_t)(t) & 0xffff)));
       name = xname;
     }
 
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index def9a694a0e87d19c4ab7d5630d7069da95b6177..4d6295af604691e4fe3ef3ac751ab25ad8d0c5d1 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -319,7 +319,7 @@ static struct attr_hash *attr_hash_table[RTL_HASH_SIZE];
 
 /* Here is how primitive or already-shared RTL's hash
    codes are made.  */
-#define RTL_HASH(RTL) ((long) (RTL) & 0777777)
+#define RTL_HASH(RTL) ((intptr_t) (RTL) & 0777777)
 
 /* Add an entry to the hash table for RTL with hash code HASHCODE.  */
 
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index d97f51367e2b4d154fd8f4cfafb72a3c5a67167b..55ce2f65a4f65ecb93340ece8844382d73948ce7 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -192,7 +192,7 @@ static inline long
 find_operand_rank (tree e)
 {
   void **slot = pointer_map_contains (operand_rank, e);
-  return slot ? (long) *slot : -1;
+  return slot ? (long) (intptr_t) *slot : -1;
 }
 
 /* Insert {E,RANK} into the operand rank hashtable.  */
@@ -204,7 +204,7 @@ insert_operand_rank (tree e, long rank)
   gcc_assert (rank > 0);
   slot = pointer_map_insert (operand_rank, e);
   gcc_assert (!*slot);
-  *slot = (void *) rank;
+  *slot = (void *) (intptr_t) rank;
 }
 
 /* Given an expression E, return the rank of the expression.  */