diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 233028faa0688fc90e18097aefca7b64435fe476..940e7573f4bcf530aed53aec30a7ef2e74cdb142 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-08  Jan Hubicka  <jh@suse.cz>
+
+	PR debug/40126
+	* dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
+
 2009-06-08  Jan Hubicka  <jh@suse.cz>
 
 	PR middle-end/39834
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 617be8008e9e9170396c77eeb2f131ec1aeeaaf4..dc82799a9bc0c87125050587b5f9ca112f68b263 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13792,6 +13792,7 @@ dwarf2out_abstract_function (tree decl)
 
   /* Make sure we have the actual abstract inline, not a clone.  */
   decl = DECL_ORIGIN (decl);
+  htab_empty (decl_loc_table);
 
   old_die = lookup_decl_die (decl);
   if (old_die && get_AT (old_die, DW_AT_inline))