[llvm-dev] RFC: We need to explicitly state that some functions are reserved by LLVM
Chandler Carruth via llvm-dev
llvm-dev at lists.llvm.org
Sat Nov 11 11:14:20 PST 2017
I will have to check, but still, this seems like an incremental path
On Sat, Nov 11, 2017, 12:07 Chris Lattner <clattner at nondot.org> wrote:
> On Nov 11, 2017, at 11:06 AM, Chandler Carruth <chandlerc at gmail.com>
> Internalize can just use target lib info since it sees them still external.
> Good point, doesn’t codegen still recognize some things as well, or does
> that go through TLI these days?
> On Sat, Nov 11, 2017, 11:47 Chris Lattner <clattner at nondot.org> wrote:
>> On Nov 10, 2017, at 7:54 PM, Chandler Carruth <chandlerc at gmail.com>
>> > But I think we can combine some of #4 and some of #2 to get a good
>> solution here that is practical and achievable:
>> > - Recognize external library functions, much like we already do, but
>> restrict it to external functions.
>> > - Recognize internal functions *with a builtin attribute* much like we
>> do external library functions.
>> > - Teach internalize to add the builtin attribute as it changes linkage.
>> > One example of what I *really* want from this even in LTO which
>> motivates the change to internalize: things like 'readonly' where some spec
>> lets us optimize callers with this even if the implementation actually
>> writes to memory. Consider building with -fno-math-errno and LTOing a libc
>> that does actually set errno in its implementation.
>> > We will also need to constrain optimizations like IPSCCP in the face of
>> internal builtin (and thus library) functions in order to avoid the printf
>> -> puts miscompile described by Eli. But we already have this problem in
>> theory today, and the above won't make it any worse and should even give us
>> new options to address it such as stripping the builtin attribute (in
>> addition to cloning, or other techniques).
>> This approach seems like it would work to me!
>> The only challenge is that you’ll need a list of “known builtins” that
>> internalize can use, that doesn’t seem like a bad thing though.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev