(override_options): Set mips_split_addresses only if
authorJim Wilson <wilson@gcc.gnu.org>
Thu, 1 May 1997 00:14:55 +0000 (17:14 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 1 May 1997 00:14:55 +0000 (17:14 -0700)
TARGET_SPLIT_ADDRESSES is set.

From-SVN: r14000

gcc/config/mips/mips.c

index dd65b958f3eacf27949c4461d10595e523dc2669..04ee9602ae7ce1818f38be69a47c501604d153da 100644 (file)
@@ -3672,10 +3672,15 @@ override_options ()
       mips_section_threshold = 0x7fffffff;
     }
 
+  /* This optimization requires a linker that can support a R_MIPS_LO16
+     relocation which is not immediately preceeded by a R_MIPS_HI16 relocation.
+     GNU ld has this support, but not all other MIPS linkers do, so we enable
+     this optimization only if the user requests it, or if GNU ld is the
+     standard linker for this configuration.  */
   /* ??? This does not work when target addresses are DImode.
      This is because we are missing DImode high/lo_sum patterns.  */
-
-  if (TARGET_GAS && optimize && ! flag_pic && Pmode == SImode)
+  if (TARGET_GAS && TARGET_SPLIT_ADDRESSES && optimize && ! flag_pic
+      && Pmode == SImode)
     mips_split_addresses = 1;
   else
     mips_split_addresses = 0;