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] |
On Sun, Jan 2, 2011 at 3:03 PM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Sun, Jan 2, 2011 at 2:05 PM, H.J. Lu <hjl.tools@gmail.com> wrote: >> 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++) >> ? ? { >> > > This doesn't work for go since -xgo isn't used with gccgo. Is there > a way to tell what the default language is for a gcc driver? > I am testing this patch with all languages on Linux/x86-64. -- H.J. --- gcc/ 2011-01-02 H.J. Lu <hongjiu.lu@intel.com> PR driver/47137 * gcc.c (default_language): New. (main): Lookup compiler to check if we should combine inputs. * gcc.h (default_language): New. gcc/go/ 2011-01-02 H.J. Lu <hongjiu.lu@intel.com> PR driver/47137 * gospec.c (lang_specific_driver): Set default_language if needed.
Attachment:
gcc-pr47137-1.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |