diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 76602042582e8b0b218b6905611b1488f1177ca7..a26def2b1ff50018bed53f2179ed0c0206c1f13a 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,8 @@
+2012-09-25  Dehao Chen  <dehao@google.com>
+
+	PR middle-end/54704
+	* line-map.c (location_adhoc_data_hash): Fix the hash function.
+
 2012-09-25  Dehao Chen  <dehao@google.com>
 
 	PR middle-end/54645
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index f0b2f8846a56f22f091294580e1cd1671da79527..61ab0318c036f79b029b05ba17fd4fefc55090f6 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -58,7 +58,7 @@ location_adhoc_data_hash (const void *l)
 {
   const struct location_adhoc_data *lb =
       (const struct location_adhoc_data *) l;
-  return (hashval_t) lb->locus + (size_t) &lb->data;
+  return (hashval_t) lb->locus + (size_t) lb->data;
 }
 
 /* Compare function for location_adhoc_data hashtable.  */