diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e6efdcd8939137b7ff6c72b42107fa84fd146a4c..e044e2b1b6a85b3434abbbb46b9053bff8150c61 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-18  Geoffrey Keating  <geoffk@apple.com>
+
+	* dwarf2out.c (prune_unused_types_update_strings): Don't add strings
+	to hash table twice when the debug_str section has SECTION_MERGE.
+
 2006-04-18  Joseph S. Myers  <joseph@codesourcery.com>
 
 	* config/soft-fp: New directory.  From glibc.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 818ddb8f67185ca311299a8044a78af5c429f549..db07bb81b30a0ec7f2fb187a4d6c470f2e49c6e9 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13998,9 +13998,8 @@ prune_unused_types_update_strings (dw_die_ref die)
 	s->refcount++;
 	/* Avoid unnecessarily putting strings that are used less than
 	   twice in the hash table.  */
-	if (s->refcount == 2
-	    || (s->refcount == 1 
-		&& (debug_str_section->common.flags & SECTION_MERGE) != 0))
+	if (s->refcount
+	    == ((DEBUG_STR_SECTION_FLAGS & SECTION_MERGE) ? 1 : 2))
 	  {
 	    void ** slot;
 	    slot = htab_find_slot_with_hash (debug_str_hash, s->str,