[LLVMdev] Removing inlining of library functions

Cristina Cifuentes Cristina.Cifuentes at sun.com
Thu Feb 21 22:35:48 PST 2008


The -fno-builtin function works well (with llvm 1.9 at least),
built-in C library functions don't get the InternalLinkage
tag, and some functions get inlined (e.g., strcpy) as they
satisfy the inlining heuristics.

However, this option allows for just about all of the other
library functions of a certain type (e.g., string) to also be
placed in the .bc files, even when not referenced, resulting
on large .bc files with endless dead code.

Regards,
Cristina




On Feb 22, 2008, at 11:03 AM, Dale Johannesen wrote:

> On Feb 21, 2008, at 5:38 PM, Chris Lattner wrote:
>> On Thu, 21 Feb 2008, Dale Johannesen wrote:
>>> The defined gcc interface for this is -fno-builtin.  It seems not be
>>> to be working in llvm-gcc, however.
>>
>> Please file a reduced testcase in bugzilla,
>>
>> -Chris
>
> Er, well, now that I've looked at the correct output files, it is  
> actually working.
>
>>>> I am interested in analyzing the bytecode code produced for C  
>>>> files.
>>>> By default, inlining of user and library functions (libc) is  
>>>> done. If
>>>> I turn off inlining (-disable-inlining in gccas and gccld) then no
>>>> inlining is done.  I want to be able to inline user code but  
>>>> disallow
>>>> library code to be inlined.
>>>>
>>>> In trying to understand the InlineSimple.cpp code, I see that  
>>>> library
>>>> functions are tagged as having internal linkage, just as other user
>>>> functions in a module, and so these library functions are inlined  
>>>> if
>>>> they satisfy other inlining rules (e.g., strcpy() is quite often
>>>> inlined).
>>>>
>>>> My questions:
>>>> - is there a simple way to disallow inlining of library functions?
>>>> - in what part of the code tree is the internal linkage attribute
>>>> being set for library functions?
>>>>
>>>> I am using LLVM1.9 (due to a dependency of some C code on gcc3.4)  
>>>> but
>>>> I'd imagine that this functionality hasn't changed much in more  
>>>> recent
>>>> versions.
>>>>
>>>> Thanks,
>>>> Cristina
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>
>> -Chris
>>
>> -- 
>> http://nondot.org/sabre/
>> http://llvm.org/
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list