OSDN Git Service

* gospec.c (lang_specific_driver): If we see -S without -o, add -o
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Jan 2012 14:52:42 +0000 (14:52 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Jan 2012 14:52:42 +0000 (14:52 +0000)
BASE.s rather than -o BASE.o.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183248 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/go/ChangeLog
gcc/go/gospec.c

index a0962b7..662b50e 100644 (file)
@@ -1,3 +1,8 @@
+2012-01-17  Ian Lance Taylor  <iant@google.com>
+
+       * gospec.c (lang_specific_driver): If we see -S without -o, add -o
+       BASE.s rather than -o BASE.o.
+
 2012-01-11  Ian Lance Taylor  <iant@google.com>
 
        * go-lang.c (go_langhook_init): Initialize void_list_node before
index 55a3bcd..8e8aa2d 100644 (file)
@@ -1,5 +1,5 @@
 /* gospec.c -- Specific flags and argument handling of the gcc Go front end.
-   Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -109,6 +109,9 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
   /* Whether the -o option was used.  */
   bool saw_opt_o = false;
 
+  /* Whether the -S option was used.  */
+  bool saw_opt_S = false;
+
   /* The first input file with an extension of .go.  */
   const char *first_go_file = NULL;  
 
@@ -163,7 +166,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
          break;
 
        case OPT_c:
-       case OPT_S:
        case OPT_E:
        case OPT_M:
        case OPT_MM:
@@ -173,6 +175,11 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
          library = -1;
          break;
 
+       case OPT_S:
+         saw_opt_S = true;
+         library = -1;
+         break;
+
        case OPT_o:
          saw_opt_o = true;
          break;
@@ -280,10 +287,13 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
       alen = baselen + 3;
       out = XNEWVEC (char, alen);
       memcpy (out, base, baselen);
-      /* The driver will convert .o to some other suffix if
-        appropriate.  */
+      /* The driver will convert .o to some other suffix (e.g., .obj)
+        if appropriate.  */
       out[baselen] = '.';
-      out[baselen + 1] = 'o';
+      if (saw_opt_S)
+       out[baselen + 1] = 's';
+      else
+       out[baselen + 1] = 'o';
       out[baselen + 2] = '\0';
       generate_option (OPT_o, out, 1, CL_DRIVER,
                       &new_decoded_options[j]);