This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Don't look for lto-wrapper, liblto_plugin.so.0 nor collect2 if -E/-S/-c


Hi!

In Fedora (but several other distros do the same) we ship cpp
as a separate package, unfortunately the lto plugin support means (IMHO
unnecessarily) that the plugin needs to be included in the cpp package
rather than gcc, because the driver looks for the plugin and complains
if not found even when the driver is cpp (or for gcc -E/-S/-c).
I think we only need it when actually linking, so this patch should save
some unnecessary syscalls on every -E/-S/-c preprocessing/compilation
as well as make /usr/bin/cpp only need cc1 and no other files.
have_c is a variable used in a couple of places earlier.

2012-02-07  Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (main): Don't look for lto-wrapper or lto-wrapper
	or LTOPLUGINSONAME if have_c.

--- gcc/gcc.c.jj	2012-01-30 00:10:01.000000000 +0100
+++ gcc/gcc.c	2012-02-07 10:03:44.777138464 +0100
@@ -6447,7 +6447,11 @@ main (int argc, char **argv)
 
   /* Set up to remember the pathname of the lto wrapper. */
 
-  lto_wrapper_file = find_a_file (&exec_prefixes, "lto-wrapper", X_OK, false);
+  if (have_c)
+    lto_wrapper_file = NULL;
+  else
+    lto_wrapper_file = find_a_file (&exec_prefixes, "lto-wrapper",
+				    X_OK, false);
   if (lto_wrapper_file)
     {
       lto_wrapper_spec = lto_wrapper_file;
@@ -6821,39 +6825,46 @@ warranty; not even for MERCHANTABILITY o
   if (num_linker_inputs > 0 && !seen_error () && print_subprocess_help < 2)
     {
       int tmp = execution_count;
+
+      if (! have_c)
+	{
 #if HAVE_LTO_PLUGIN > 0
 #if HAVE_LTO_PLUGIN == 2
-      const char *fno_use_linker_plugin = "fno-use-linker-plugin";
+	  const char *fno_use_linker_plugin = "fno-use-linker-plugin";
 #else
-      const char *fuse_linker_plugin = "fuse-linker-plugin";
+	  const char *fuse_linker_plugin = "fuse-linker-plugin";
 #endif
 #endif
 
-      /* We'll use ld if we can't find collect2.  */
-      if (! strcmp (linker_name_spec, "collect2"))
-	{
-	  char *s = find_a_file (&exec_prefixes, "collect2", X_OK, false);
-	  if (s == NULL)
-	    linker_name_spec = "ld";
-	}
+	  /* We'll use ld if we can't find collect2.  */
+	  if (! strcmp (linker_name_spec, "collect2"))
+	    {
+	      char *s = find_a_file (&exec_prefixes, "collect2", X_OK, false);
+	      if (s == NULL)
+		linker_name_spec = "ld";
+	    }
 
 #if HAVE_LTO_PLUGIN > 0
 #if HAVE_LTO_PLUGIN == 2
-      if (!switch_matches (fno_use_linker_plugin,
-			   fno_use_linker_plugin + strlen (fno_use_linker_plugin), 0))
+	  if (!switch_matches (fno_use_linker_plugin,
+			       fno_use_linker_plugin
+			       + strlen (fno_use_linker_plugin), 0))
 #else
-      if (switch_matches (fuse_linker_plugin,
-			  fuse_linker_plugin + strlen (fuse_linker_plugin), 0))
+	  if (switch_matches (fuse_linker_plugin,
+			      fuse_linker_plugin
+			      + strlen (fuse_linker_plugin), 0))
 #endif
-	{
-	  linker_plugin_file_spec = find_a_file (&exec_prefixes,
-						 LTOPLUGINSONAME, R_OK,
-						 false);
-	  if (!linker_plugin_file_spec)
-	    fatal_error ("-fuse-linker-plugin, but %s not found", LTOPLUGINSONAME);
-	}
+	    {
+	      linker_plugin_file_spec = find_a_file (&exec_prefixes,
+						     LTOPLUGINSONAME, R_OK,
+						     false);
+	      if (!linker_plugin_file_spec)
+		fatal_error ("-fuse-linker-plugin, but %s not found",
+			     LTOPLUGINSONAME);
+	    }
 #endif
-      lto_gcc_spec = argv[0];
+	  lto_gcc_spec = argv[0];
+	}
 
       /* Rebuild the COMPILER_PATH and LIBRARY_PATH environment variables
 	 for collect.  */

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]