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, > > -ChrisEr, 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
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> >> 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/
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 >
Seemingly Similar Threads
- [LLVMdev] Removing inlining of library functions
- [LLVMdev] Removing inlining of library functions
- [LLVMdev] Removing inlining of library functions
- [LLVMdev] Does the gcc frontend do inlining or deadcode elimination ?
- [LLVMdev] Does the gcc frontend do inlining or deadcode elimination ?