diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3ee94b146733b548bfb845720698fa6c80bf92ea..0ab6cd5d3049431cb1da5d95ec6a2eb46d021cdd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	* config/i386/i386.c (ix86_address_cost): Do not consider more complex
+	addressing modes cheaper.
+
 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
 
 	* dwarf2out.c (dw_ranges_by_label_ref): New typedef.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 341bf90bf9e66637961ba3ea8e716e3736e74293..f57d8613833a8fbbf8bc51cef7c91f73bd581ff2 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -6564,12 +6564,6 @@ ix86_address_cost (rtx x)
   if (parts.index && GET_CODE (parts.index) == SUBREG)
     parts.index = SUBREG_REG (parts.index);
 
-  /* More complex memory references are better.  */
-  if (parts.disp && parts.disp != const0_rtx)
-    cost--;
-  if (parts.seg != SEG_DEFAULT)
-    cost--;
-
   /* Attempt to minimize number of registers in the address.  */
   if ((parts.base
        && (!REG_P (parts.base) || REGNO (parts.base) >= FIRST_PSEUDO_REGISTER))