This is the mail archive of the gcc@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]

Re: Behavior change of driver on multiple input assembly files


On Sun, Jan 2, 2011 at 1:18 PM, Ian Lance Taylor <iant@google.com> wrote:
> Richard Guenther <richard.guenther@gmail.com> writes:
>
>> On Sun, Jan 2, 2011 at 9:24 PM, Ian Lance Taylor <iant@google.com> wrote:
>>> Richard Guenther <richard.guenther@gmail.com> writes:
>>>
>>>> Your small patch removing have_o || is ok I guess.
>>>
>>> Wait. ?That will change the behaviour of
>>> ? ?gcc -o foo.o -c f1.c f2.c f3.c
>>> Is that what we want?
>>
>> Does it? ?I don't think so. ?Most of the combine handling was removed by
>> the patch that caused the regression, so -o and -c doesn't combine anymore
>> (with multiple sources).
>
> Sorry, you're right. ?The difference is that @c has 0 for the combinable
> field, and @assembler has 1. ?Before H.J.'s change, this worked
> ? ?gcc -c -o f.o f1.s f2.s
> After his change, it does not. ?That is probably not a big deal.
>
> I wonder why @assembler has 1 for combinable? ?It seems to have been set
> to 1 when the combinable field was added in 2004-04-05 with -combine.
> Now that -combine has been removed, if the combinable field for
> @assembler were 0, it seems to me that H.J.'s problem would also be
> fixed. ?And it seems to me that it should be 0.
>
>
>>> Also, right now the gccgo driver depends on the -o behaviour to combine
>>> inputs. ?If that changes, the driver will need to provide some other way
>>> to let the frontend force inputs to be combined.
>>
>> For go it isn't equivalent to do gcgo -c t1.go; gcgo -c t2.go; gcgo t1.o t2.o
>> compared to gcgo t1.go t2.go?
>
> No, it is not. ?All .go input files must be passed to go1 at once.
> H.J.'s patch has indeed broken gccgo.
>

Can you try this patch?

Thanks.


-- 
H.J.
---
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 0d633a4..d0b2c96 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -6582,7 +6582,20 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A P
ARTICULAR PURPOSE.\n\n"

   explicit_link_files = XCNEWVEC (char, n_infiles);

+  /* Check if we should combine inputs.  */
   combine_inputs = flag_wpa;
+  if (!combine_inputs)
+    for (i = 1; i < decoded_options_count; i++)
+      {
+	if (decoded_options[i].opt_index == OPT_x)
+	  {
+	    struct compiler *compiler
+	      = lookup_compiler (NULL, 0, decoded_options[i].arg);
+	    if (compiler)
+	      combine_inputs = compiler->combinable;
+	    break;
+	  }
+      }

   for (i = 0; (int) i < n_infiles; i++)
     {


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