[PATCH] Fixes tree-loop-distribute-patterns issues
Carlos O'Donell
carlos@redhat.com
Thu Jun 20 13:10:00 GMT 2013
On 06/19/2013 07:22 PM, Roland McGrath wrote:
>>> For this case, I really don't think it makes any kind of sense to
>>> "dynamically test for what is actually wrong"--or perhaps even to think
>>> that you ever could. The real "what is actually wrong" is not a dynamic
>>> thing. It's statically true that it's wrong for the compiler to think it
>>> has the option to emit a library call in these cases.
>>
>> That truth isn't strictly tied to the option itself, it is tied to a
>> compiler behaviour. We can't know the compiler behaviour unless we test
>> that behaviour.
>
> We don't need to know it. We need to constrain it.
Thanks, that clarifies your position better than anything else you've said.
>> Say in 5 years gcc grows the ability to optimize memset into a set of
>> optimal vector libcalls? The test as it was proposed would detect that
>> memset was no longer called, avoid the workaround, and we'd get a faster
>> memset (albeit tied to whatever compiler runtime has the libcalls, think
>> libgcc, think ARM compiler helper routines).
>
> Burn that bridge when we come to it? ;-)
Heh. OK, agreed :-)
> I am far more concerned about today's libc becoming unbuildable with a
> future compiler than I am about today's libc being optimized by a future
> compiler no better than it is by today's compilers.
>
> The conservative assumption is that those hypothetical future other
> outcalls will themselves be implemented using standard libc functions and
> create an indirect circularity.
That's something I hadn't considered, and it's a good point.
>> The turning point though would be if we had enough framework in place
>> for me to invoke a compilation of memset from the actual glibc source
>> as part of the configure and test if the failure was present?
>
> Perhaps something like that. At that point I think we would not do it in
> configure at all. It could be in the build process itself. For example,
> compile each function without optimization, collect the list of external
> references it generates that way, then compile with optimization and see if
> it started calling things the unoptimized version didn't call; if it did,
> annotate it to inhibit the optimizations suspected of producing them (it
> could even be iterative for a set of possible annotations). Not to get
> into the details of the hypothetical right now, just an example. The short
> version is to say a dynamic approach is acceptable if it's completely
> robust (in a maintainable way).
Thank you for indulging this line of thinking. It certainly gives me idea
for future enhancements.
Cheers,
Carlos.
More information about the Libc-alpha
mailing list