OSDN Git Service

* target.h (struct calls): Add function_value_regno_p field.
[pf3gnuchains/gcc-fork.git] / gcc / gcc.c
index 7e4343d..41569fc 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -781,15 +781,9 @@ proper position among the other output files.  */
     %{fuse-linker-plugin: \
     -plugin %(linker_plugin_file) \
     -plugin-opt=%(lto_wrapper) \
-    -plugin-opt=%(lto_gcc) \
     -plugin-opt=-fresolution=%u.res \
     %{static|static-libgcc:-plugin-opt=-pass-through=%(lto_libgcc)}    \
     %{static:-plugin-opt=-pass-through=-lc}    \
-    %{O*:-plugin-opt=-O%*} \
-    %{w:-plugin-opt=-w} \
-    %{f*:-plugin-opt=-f%*} \
-    %{m*:-plugin-opt=-m%*} \
-    %{v:-plugin-opt=-v} \
     } \
     %{flto} %{fwhopr} %l " LINK_PIE_SPEC \
    "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
@@ -2045,23 +2039,6 @@ static int signal_count;
 /* Name with which this program was invoked.  */
 
 static const char *programname;
-
-/* This is the common prefix we use to make temp file names.
-   It is chosen once for each run of this program.
-   It is substituted into a spec by %g or %j.
-   Thus, all temp file names contain this prefix.
-   In practice, all temp file names start with this prefix.
-
-   This prefix comes from the envvar TMPDIR if it is defined;
-   otherwise, from the P_tmpdir macro if that is defined;
-   otherwise, in /usr/tmp or /tmp;
-   or finally the current directory if all else fails.  */
-
-static const char *temp_filename;
-
-/* Length of the prefix.  */
-
-static int temp_filename_length;
 \f
 /* Allocate the argument vector.  */
 
@@ -2099,7 +2076,15 @@ store_arg (const char *arg, int delete_always, int delete_failure)
   if (strcmp (arg, "-o") == 0)
     have_o_argbuf_index = argbuf_index;
   if (delete_always || delete_failure)
-    record_temp_file (temp_filename, delete_always, delete_failure);
+    {
+      const char *p;
+      /* If the temporary file we should delete is specified as
+        part of a joined argument extract the filename.  */
+      if (arg[0] == '-'
+         && (p = strrchr (arg, '=')))
+       arg = p + 1;
+      record_temp_file (arg, delete_always, delete_failure);
+    }
 }
 \f
 /* Load specs from a file name named FILENAME, replacing occurrences of
@@ -2402,6 +2387,23 @@ read_specs (const char *filename, int main_p)
 /* Record the names of temporary files we tell compilers to write,
    and delete them at the end of the run.  */
 
+/* This is the common prefix we use to make temp file names.
+   It is chosen once for each run of this program.
+   It is substituted into a spec by %g or %j.
+   Thus, all temp file names contain this prefix.
+   In practice, all temp file names start with this prefix.
+
+   This prefix comes from the envvar TMPDIR if it is defined;
+   otherwise, from the P_tmpdir macro if that is defined;
+   otherwise, in /usr/tmp or /tmp;
+   or finally the current directory if all else fails.  */
+
+static const char *temp_filename;
+
+/* Length of the prefix.  */
+
+static int temp_filename_length;
+
 /* Define the list of temporary files to delete.  */
 
 struct temp_file
@@ -3012,14 +3014,23 @@ execute (void)
              for (j = commands[i].argv; *j; j++)
                {
                  const char *p;
-                 fprintf (stderr, " \"");
                  for (p = *j; *p; ++p)
+                   if (!ISALNUM ((unsigned char) *p)
+                       && *p != '_' && *p != '/' && *p != '-' && *p != '.')
+                     break;
+                 if (*p || !*j)
                    {
-                     if (*p == '"' || *p == '\\' || *p == '$')
-                       fputc ('\\', stderr);
-                     fputc (*p, stderr);
+                     fprintf (stderr, " \"");
+                     for (p = *j; *p; ++p)
+                       {
+                         if (*p == '"' || *p == '\\' || *p == '$')
+                           fputc ('\\', stderr);
+                         fputc (*p, stderr);
+                       }
+                     fputc ('"', stderr);
                    }
-                 fputc ('"', stderr);
+                 else
+                   fprintf (stderr, " %s", *j);
                }
            }
          else