On 7/9/19 11:14 PM, Jason Merrill wrote:
> On 7/9/19 1:48 PM, Nathan Sidwell wrote:
>> On 7/9/19 9:00 AM, Martin Liška wrote:
>>> On 7/9/19 1:41 PM, Nathan Sidwell wrote:
>>>> On 7/9/19 6:39 AM, Richard Biener wrote:
>>>>> On Mon, Jul 8, 2019 at 2:04 PM Martin Liška <[email protected]> wrote:
>>>>>>
>>>>
>>>>>>
>>>>>> Same happens also for GCC7. It does 17 iteration (#define MAX_ITERATIONS
>>>>>> 17) and
>>>>>> apparently 17 is not enough to resolve all symbols. And it's really slow.
>>>>>
>>>>> Ouch.
>>>>
>>>> hm, 17 is a magic number. in C++98 it was the maximum depth of template
>>>> instantiations that implementations needed to support. Portable code
>>>> could not expect more. So the worst case -frepo behaviour would be 17
>>>> iterations.
>>>>
>>>> That's not true any more, it's been 1024 since C++11.
>>>>
>>>> Has a bug been filed about this frepo problem?
>>>
>>> I create a new one:
>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91125
>>>
>>>> If not, it suggest those using frepo are not compiling modern C++.
>>>>
>>>>>> That said, I would recommend to remove it :)
>>>>>
>>>>> In the end it's up to the C++ FE maintainers but the above clearly
>>>>> doesn't look promising
>>>>> (not sure if it keeps re-compiling _all_ repo-triggered templates or
>>>>> just incrementally adds
>>>>> them to new object files).
>>>>
>>>>> I'm not opposed to removing -frepo from GCC 10 but then I would start
>>>>> noting it is obsolete
>>>>> on the GCC 9 branch at least.
>>>>
>>>> I concur. frepo's serial reinvocation of the compiler is not compatible
>>>> with modern C++ code bases.
>>>
>>> Great. Then I'm sending patch that does the functionality removal.
>>>
>>> Ready to be installed after proper testing & bootstrap?
>>
>> I'd like Jason to render an opinion, and we should mark it obsolete in the
>> gcc 9 branch (how much runway would that give people?)
>
> I haven't noticed any responses to my earlier question: Are there any targets
> without COMDAT support that we still care about?
>
> But given the observation above about the 17 limit, even if there are such
> targets it wouldn't be very useful for modern code. And if people want to
> compile old code for old platforms, they might as well continue to use an old
> compiler.
>
> So I'm OK with deprecating with a warning for the next GCC 9 release, to see
> if anyone complains, and removing in 10.
Great, thank you.
There's a patch for deprecating of the option in GCC 9 changes.
May I install the patch right now or should I wait?
Thanks,
Martin
>
> Jason
diff --git a/htdocs/gcc-9/changes.html b/htdocs/gcc-9/changes.html
index bf9f6db..bec4754 100644
--- a/htdocs/gcc-9/changes.html
+++ b/htdocs/gcc-9/changes.html
@@ -57,6 +57,11 @@ You may also want to check out our
announcement</a>.</li>
</ul>
</li>
+ <li>
+ The automatic template instantiation at link time (<a href="https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/C_002b_002b-Dialect-Options.html#index-frepo"><code>-frepo</code></a>) has been deprecated and
+ will be removed in a future release.
+ </li>
+
</ul>