Blame SOURCES/gcc32-multi32-hack.patch

4ac4fd
This is an optimization hack which should only be present
4ac4fd
in a sparc 32bit driver of the compiler compiled with
4ac4fd
host/target/build sparc64-redhat-linux --with-cpu=v7.
4ac4fd
As long long HOST_WIDE_INT slows things down, we can have in
4ac4fd
addition to the sparc64-*/3.2/{cc1,cc1plus}
4ac4fd
sparc-*/3.2/{cc1,cc1plus} binaries which are suitable for compiling
4ac4fd
-m32 code only, but use long HOST_WIDE_INT.
4ac4fd
4ac4fd
--- gcc/gcc.c.jj	Thu Aug  1 17:41:31 2002
4ac4fd
+++ gcc/gcc.c	Fri Sep  6 16:48:10 2002
4ac4fd
@@ -3184,6 +3184,8 @@ process_command (argc, argv)
4ac4fd
   int have_c = 0;
4ac4fd
   int have_o = 0;
4ac4fd
   int lang_n_infiles = 0;
4ac4fd
+  int m64 = 0;
4ac4fd
+  int used_B = 0;
4ac4fd
 #ifdef MODIFY_TARGET_NAME
4ac4fd
   int is_modify_target_name;
4ac4fd
   int j;
4ac4fd
@@ -3565,6 +3567,7 @@ warranty; not even for MERCHANTABILITY o
4ac4fd
 		spec_machine = p + 1;
4ac4fd
 
4ac4fd
 	      warn_std_ptr = &warn_std;
4ac4fd
+	      used_B = 1;
4ac4fd
 	      break;
4ac4fd
 
4ac4fd
 	    case 'B':
4ac4fd
@@ -3627,6 +3630,7 @@ warranty; not even for MERCHANTABILITY o
4ac4fd
 			    PREFIX_PRIORITY_B_OPT, 0, &warn_B, 0);
4ac4fd
 		add_prefix (&include_prefixes, concat (value, "include", NULL),
4ac4fd
 			    NULL, PREFIX_PRIORITY_B_OPT, 0, NULL, 0);
4ac4fd
+		used_B = 1;
4ac4fd
 		n_switches++;
4ac4fd
 	      }
4ac4fd
 	      break;
4ac4fd
@@ -3731,6 +3735,13 @@ warranty; not even for MERCHANTABILITY o
4ac4fd
 #endif
4ac4fd
 	      goto normal_switch;
4ac4fd
 
4ac4fd
+	    /* HACK START */
4ac4fd
+	    case 'm':
4ac4fd
+	      if (p[1] == '6' && p[2] == '4')
4ac4fd
+		m64 = 1;
4ac4fd
+	    /* FALLTHROUGH */
4ac4fd
+	    /* HACK END */
4ac4fd
+
4ac4fd
 	    default:
4ac4fd
 	    normal_switch:
4ac4fd
 
4ac4fd
@@ -3798,6 +3809,26 @@ warranty; not even for MERCHANTABILITY o
4ac4fd
   /* Use 2 as fourth arg meaning try just the machine as a suffix,
4ac4fd
      as well as trying the machine and the version.  */
4ac4fd
 #ifndef OS2
4ac4fd
+  /* HACK START */
4ac4fd
+  if (!m64 && !used_B && !strncmp (spec_machine, "sparc64-", 8))
4ac4fd
+    {
4ac4fd
+      const char *sparc32_exec_prefix =
4ac4fd
+	concat (standard_exec_prefix, "sparc-", spec_machine + 8,
4ac4fd
+		dir_separator_str, spec_version, dir_separator_str, NULL);
4ac4fd
+      add_prefix (&exec_prefixes, sparc32_exec_prefix, "GCC",
4ac4fd
+		  PREFIX_PRIORITY_LAST, 0, warn_std_ptr, 0);
4ac4fd
+    }
4ac4fd
+  /* HACK END */
4ac4fd
+  /* HACK START */
4ac4fd
+  if (!m64 && !used_B && !strncmp (spec_machine, "ppc64-", 6))
4ac4fd
+    {
4ac4fd
+      const char *ppc32_exec_prefix =
4ac4fd
+	concat (standard_exec_prefix, "ppc-", spec_machine + 6,
4ac4fd
+		dir_separator_str, spec_version, dir_separator_str, NULL);
4ac4fd
+      add_prefix (&exec_prefixes, ppc32_exec_prefix, "GCC",
4ac4fd
+		  PREFIX_PRIORITY_LAST, 0, warn_std_ptr, 0);
4ac4fd
+    }
4ac4fd
+  /* HACK END */
4ac4fd
   add_prefix (&exec_prefixes, standard_exec_prefix, "GCC",
4ac4fd
 	      PREFIX_PRIORITY_LAST, 1, warn_std_ptr, 0);
4ac4fd
   add_prefix (&exec_prefixes, standard_exec_prefix, "BINUTILS",